Task.ContinueWith()vs 2任务?

时间:2013-03-10 12:11:11

标签: c# .net-4.0 task-parallel-library

我应该何时使用

Task task1 = Task.Factory.StartNew (() => {...})
                 .ContinueWith (ant => Console.Write ("2"));

VS

Task task1 = Task.Factory.StartNew (() => {... });
Task task2 = task1.ContinueWith (ant => Console.Write ("2"));

1 个答案:

答案 0 :(得分:4)

这意味着相同,除了你现在将引用第二个任务。如果第一个任务在一起执行任务之前需要一些处理,则可以使用第二个选项。一个例子是添加另一个var task3 = task1.ContinueWith()所以任务二和三将同时执行,但只有在第一个任务完成处理时才会执行。实际上它应该是:

Task task2 = Task.Factory.StartNew (() => {...}).ContinueWith (ant => Console.Write ("2"));

Task task1 = Task.Factory.StartNew (() => {... });
Task task2 = task1.ContinueWith (ant => Console.Write ("2"));

注意我已将task1替换为task2。启动任务将导致task1先启动。