2010-11-19 3 views
3

Часто мне нужно сделать дорогостоящую задачу, а затем отобразить результаты. Поэтому я наращиваю поток. Есть ли меньше кода или лучший способ сделать это, чем я сейчас использую?Monotouch Threading - лучший дизайн Вопрос

Пример:

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

--start нить здесь ....

ответ

6

Вы можете использовать пул потоков и упростить вещи немного.

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

+1

Я тоже так делаю. Трюк заключается в том, чтобы никогда, никогда не забывать InvokeOnMainThread(). –

+1

Одна вещь, которую следует помнить, это ThreadPool на Monotouch (поскольку максимальный объем памяти вашего приложения может составлять около 46 мб) ограничено примерно 20 потоками –

4

Как указывает Кевин, использование ThreadPool немного проще.

Но есть дополнительный бонус к использованию ThreadPool: Mono ограничит количество потоков, которые вы развернете, что поможет вам лучше сохранить ограниченные ресурсы на устройстве.

+1

Мигель, спасибо за ответ .. и за Monotouch !!! Мы отправили 45 приложений и продали несколько тысяч всех на основе Rock-Solid Monotouch, которые вы и ваша команда создали. –

+0

Это музыка для моих ушей! –