TaskFactory.StartNew()创建一个新任务,启动它然后返回它。我认为可以安全地假设以下代码将始终有效(因为它来自MSDN):
Task.Factory.StartNew(() => Console.WriteLine("first"))
.ContinueWith(antecendent => Console.WriteLine("second"));
这是如何工作的?在调用.ContinueWith()
之前,如何确保任务尚未开始(或甚至完成)?
答案 0 :(得分:3)
TPL旨在从使用者中抽象出任务的异步性质,因此如果在已完成的任务上调用ContinueWith
,则会立即调用前提处理程序。
这意味着您可以创建Task
TaskFactory.StartNew
(将安排任务异步运行)或new Task(() => { /*...*/})
后跟task.RunSynchronously()
,您可以随时拨打ContinueWith
Task
上的{1}}。它基本上意味着“在任务完成后安排这个运行,或者现在如果它已经完成”。