MonoTouch - Threading - PullRequest
       28

MonoTouch - Threading

6 голосов
/ 11 ноября 2011

Обычная задача - сделать что-то в фоновом потоке, затем, когда это будет сделано, передать результаты в поток пользовательского интерфейса и сообщить пользователю.

Я понимаю, что есть два распространенных способа:

Я могу использовать TPL:

var context = TaskScheduler.FromCurrentSynchronizationContext ();

Task.Factory.StartNew (() => {
    DoSomeExpensiveTask();
    return "Hi Mom";
}).ContinueWith (t => { 
    DoSomethingInUI(t.Result);             
}, context);

Или более старый ThreadPool:

    ThreadPool.QueueUserWorkItem ((e) => {
          DoSomeExpensiveTask();
      this.InvokeOnMainThread (() => {
             DoSomethingInUI(...);
      });
});

Есть ли рекомендуемый способ использования MonoTouch для создания приложений iOS?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Хотя я предпочитаю синтаксис Task Parallel Library , кодовая база ThreadPool старше (в Mono и MonoTouch), поэтому вы с большей вероятностью найдете документацию по ней и с меньшей вероятностью попадете в ошибка .

1 голос
/ 11 ноября 2011

Согласно этому документу, mono touch обеспечивает доступ к ThreadPool и Thread:

Среда выполнения MonoTouch предоставляет разработчикам доступ к потокам .NET API, оба явно используют потоки (System.Threading.Thread, System.Threading.ThreadPool), а также неявно при использовании асинхронные шаблоны делегатов или методы BeginXXX.

http://docs.xamarin.com/ios/advanced_topics/threading

Кроме того, вы должны вызвать InvokeOnMainThread для обновления вашего пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...