Task Parallel库的不同用途

Tho*_*mas 4 c# task-parallel-library

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

Parallel.Invoke(() => Method1(yourString1),() => Method2(youString2));
Run Code Online (Sandbox Code Playgroud)

很少有人写代码如下:

Task myFirstTask = Task.Factory.StartNew(() => Method1(5));
Task mySecondTask = Task.Factory.StartNew(() => Method2("Hello"));
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jon*_*eet 6

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

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

这真的取决于你想做什么.如果您希望线程在所有任务完成之前阻塞,Parallel.Invoke则非常方便.