2010-11-19 36 views
3

通常,我需要做一个昂贵的任务,然后显示结果。所以我加紧了一条线索。是否有更少的代码,或者比我目前使用的更好的方式来做到这一点?单线程攻丝 - 更好的设计问题

例子:

ThreadStart job = new ThreadStart (delegate { 
    Search d = new Search(); 
    x = d.DoSomeWork(); 
    InvokeOnMainThread (delegate { 
     ctl.Show (x); 
      }); 
}); 

--start这里的线程....

回答

6

可以使用线程池,简化的东西一点点。

ThreadPool.QueueUserWorkItem(delegate {/ * ... * /});

+1

我也这样做..诀窍是永远不会忘记InvokeOnMainThread()。 – 2010-11-19 17:19:25

+1

要记住的一件事是Monotouch上的ThreadPool(因为您的应用程序的最大内存占用空间可能在46mb左右)仅限于大约20个线程 – 2010-11-25 15:57:18

4

正如Kevin所指出的,ThreadPool的使用稍微简单一些。

但是使用ThreadPool还有一个额外的好处:Mono会限制启动的线程数量,帮助您更好地保留设备上的有限资源。

+1

Miguel,感谢您的答案。我们已经发布了45款应用,并且在您和您的团队建立的坚如磐石的Monotouch框架上销售了数千款应用。 – 2010-11-21 05:33:34

+0

这是我耳中的音乐! – 2010-11-21 21:13:22