我正在寻找一种在后台执行任务的简单方法,然后在完成时更新某些内容(在主线程上)。它在一个低级的“模型”类中,所以我不能调用 InvokeOnMainThread,因为我周围没有 NSObject。我有这个方法:
public void GetItemsAsync(Action<Item[]> handleResult)
{
Item[] items=null;
Task task=Task.Factory.StartNew(() =>
{
items=this.CreateItems(); // May take a second or two
});
task.ContinueWith(delegate
{
handleResult(items);
}, TaskScheduler.FromCurrentSynchronizationContext());
}
这似乎工作正常,但是
1)这是最好(最简单)的方式吗?
2)我担心局部变量:
Item{} items=null
当方法在后台线程完成之前返回时,是什么阻止了这种消失?
谢谢。