c# - Task Parallel库的不同使用

标签 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 类和 StartNew() 方法有什么意义.........一些光告诉我不同​​方法对同一种工作的重要性意味着用两种不同的语法并行调用两个函数。

Task Parallel 库 之前我从未使用过。所以使用两种方法调用函数可能有一些隐藏的原因。请详细指导我。谢谢

最佳答案

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

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

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

关于c# - Task Parallel库的不同使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11931135/

相关文章:

c# - 在 C# 中的构造函数上填充列表

c# - 如何在 C# 中对分隔字符串数组进行数字排序

c# - 异步套接字读取 : the initiating thread must not be exited - what to do?

.net - Dataflow LinkTo 参数discardMessages 发生了什么?

c# - 在 Task.Run 中使用 CancellationToken 超时不起作用

c# - 编辑包含引号的注册表字符串

c# - 如何将其他窗体的方法使用到我的主窗体中?

c# - 一次获取一个子字符串的所有实例?

c# - TPL Parallel.ForEach 中的每线程实例对象

async-await - 等待 Task.CompletedTask 与返回