.net - 是否可以等待未知任务完成?

标签 .net multithreading task-parallel-library

使用 .NET 任务并行库,是否有一种内置方法可以等待所有正在运行的任务完成,而无需实际引用任务?

Task.WaitAny()Task.WaitAll() 都需要一个 Task 实例数组。我想要的是类似 Task.WaitAll() 的东西,它不带任何参数,只是等待我的应用程序生成的所有任务完成。

如果没有,我会在我的框架中构建一些东西,但如果可以的话,我不想重新发明轮子。

最佳答案

我知道这并不能直接回答您的问题,但您可以更改架构,以便所有任务都创建为一个“主要”任务的子任务。等待这个“主要”任务将自动等待其所有子任务。

您可以像这样创建子任务:

Task.Factory.StartNew(
    () => /* ... */,
    TaskCreationOptions.AttachedToParent
);

当涉及子任务主题时,您可能会发现以下链接很有用:

关于.net - 是否可以等待未知任务完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180964/

相关文章:

Java - 多线程CPU缓存

.net - 测量 TPL 中的并行度

c# - FileSystemWatcher:远程网络问题

asp.net - HTTP 错误 404。找不到请求的资源

c# - C# 中的 TraceRoute 和 Ping

java - 在Jframe中添加循环

c# - Parallel For 不会导致静态构造函数中的死锁?

c# - Task.WhenAny 取消未完成的任务和超时

c# - 何时使用 "await"关键字

c# - 消费者的 Amazon Kinesis KCL 客户端无法在 .NET 中运行