MonoTouch - 线程化

Ian*_*ink 6 c# xamarin.ios threadpool task-parallel-library ios

一个常见的任务是在后台线程中执行某些操作,然后在完成后将结果传递给UI线程并通知用户.

我知道有两种常见的方法:

我可以使用TPL:

var context = TaskScheduler.FromCurrentSynchronizationContext ();

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

或旧的ThreadPool:

    ThreadPool.QueueUserWorkItem ((e) => {
          DoSomeExpensiveTask();
      this.InvokeOnMainThread (() => {
             DoSomethingInUI(...);
      });
});
Run Code Online (Sandbox Code Playgroud)

使用MonoTouch构建iOS应用程序时是否有推荐的方法?

pou*_*pou 2

虽然我更喜欢任务并行库的语法,但代码ThreadPool库较旧(在 Mono 和 MonoTouch 中),因此您更有可能找到它的文档并且不太可能遇到错误