所以最近有人告诉我,我如何使用 .ContinueWith 来处理任务并不是使用它们的正确方法。我还没有在互联网上找到这方面的证据,所以我会问你们,看看答案是什么。这是我如何使用 .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(); 否则你可以在上一个任务完成之前完成工作。这甚至可能吗?我假设我的第二个和第三个任务只有在他们之前的任务完成后才会运行。
我被告知如何编写代码:
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");
});
}