それで、最近、私は.ContinueWith for Tasksをどのように使用しているかが、適切な使用方法ではないと言われました。私はインターネットでこれの証拠をまだ見つけていないので、皆さんに尋ねて、答えが何であるかを確認します。これが.ContinueWithの使用例です。
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 3");
});
}
これは簡単な例であり、非常に高速に実行されることを知っていますが、各タスクがより長い操作を実行すると仮定します。だから、私が言われたことは、.ContinueWithでは、prevTask.Wait();と言う必要があるということです。それ以外の場合は、前のタスクが完了する前に作業を行うことができます。それは可能ですか?2つ目と3つ目のタスクは、前のタスクが終了して初めて実行されると想定しました。
コードの書き方を教えられた:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
prevTask.Wait();
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
prevTask.Wait();
Console.WriteLine("Step 3");
});
}