4

TaskFactory.StartNew()は、新しいタスクを作成し、それを開始してから返します。次のコードは常に機能すると想定しても安全だと思います(MSDNから取得したため)。

Task.Factory.StartNew(() => Console.WriteLine("first"))
   .ContinueWith(antecendent => Console.WriteLine("second"));

これはどのように作動しますか?.ContinueWith()呼び出される前にタスクが開始されていない(または完了していない)ことをどのように確認できますか?

4

1 に答える 1

3

TPLは、コンシューマーからタスクの非同期性を抽象化することを目的としているためContinueWith、完了したタスクを呼び出すと、先行ハンドラーがすぐに呼び出されます。

これは、Taskwith TaskFactory.StartNew(タスクを非同期で実行するようにスケジュールする)または後にをnew Task(() => { /*...*/})作成して、task.RunSynchronously()いつでもを呼び出すことができることを意味します。これは基本的に、「タスクが完了したら、またはタスクがすでに完了している場合は今すぐ実行するようにスケジュールする」ことを意味します。ContinueWithTask

于 2011-10-26T12:12:59.363 に答える