所以我最近被告知,我是如何使用我的.ContinueWith for Tasks不是正确的方式来使用它们。我还没有在互联网上找到这个证据,所以我会问你们,看看答案是什么。下面是我如何使用.ContinueWith一个例子:是否prevTask.Wait()建议与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");
});
}
不要使用StartNew http://blog.stephencleary.com/2013/08/startnew-is-dangerous.html – 2016-01-22 21:02:25