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()您可以随时调用ContinueWith. Task它基本上意味着“安排它在任务完成后运行,或者现在如果它已经完成”。

于 2011-10-26T12:12:59.363 回答