バックグラウンドでタスクを実行し、完了時に(メインスレッドで)何かを更新する簡単な方法を探しています。低レベルの「モデル」クラスにあるため、NSObject がないため、InvokeOnMainThread を呼び出すことができません。私はこの方法を持っています:
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
バックグラウンド スレッドが完了する前にメソッドが戻ると、何が消えてなくなるのでしょうか?
ありがとう。