为什么 TaskFactory.StartNew 和 Task.ContinueWith 结合使用?

4

TaskFactory.StartNew()创建一个新的任务,开始执行并返回它。我认为可以安全地假设以下代码总是能够正常工作(因为这段代码来自于MSDN):

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

这个是怎么工作的?我怎么知道在调用 .ContinueWith() 之前任务没有被开始(或者甚至已经完成)?

1个回答

3
TPL的目的是从消费者那里抽象出任务的异步性质,因此如果您在完成的任务上调用ContinueWith,则前置处理程序将立即被调用。
这意味着您可以使用TaskFactory.StartNew(它将安排任务以异步方式运行)或new Task(() => { /*...*/})创建一个Task,然后跟随task.RunSynchronously(),并且您总是可以在Task上调用ContinueWith。这基本上意味着“一旦任务完成,或如果已经完成,则安排其运行”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接