Task Parallel库的不同用途

时间:2012-08-13 09:05:14

标签: c# task-parallel-library

我看到很少有人使用如下语法调用函数:

Parallel.Invoke(() => Method1(yourString1),() => Method2(youString2));

很少有人写代码如下:

Task myFirstTask = Task.Factory.StartNew(() => Method1(5));
Task mySecondTask = Task.Factory.StartNew(() => Method2("Hello"));

所以我的问题是当一个人应该使用 Parallel.Invoke()时,应该创建一个Task类的实例并调用 StartNew()方法。

Parallel.Invoke()看起来非常方便。那么使用Task class& amp; StartNew()方法.........点亮并告诉我同一种工作的不同方法的重要性意味着调用两个函数并行使用两种不同的语法。

我从未在任务并行库之前使用。所以可能有一些隐藏的原因使用两种方法来调用函数。请详细指导我。感谢

1 个答案:

答案 0 :(得分:6)

好吧,Parallel.Invoke将阻止,直到两个新任务都完成。

第二种方法将启动两个新任务,但不等待它们完成。您可以手动等待它们,或者在C#5中,新的异步/等待功能将帮助您“异步”等待。

这真的取决于你想做什么。如果希望您的线程在所有任务完成之前阻止,Parallel.Invoke就会很方便。