2010-11-19 35 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