Ale*_*lex 4 c# concurrency task-parallel-library async-await .net-4.5
鉴于以下内容:
BlockingCollection<MyObject> collection;
public class MyObject
{
public async Task<ReturnObject> DoWork()
{
(...)
return await SomeIOWorkAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
同时在集合中的所有 MyObjects 上异步执行所有 DoWork()任务的正确/最佳性能(在捕获返回对象时),理想情况下具有合理的线程限制(我相信Task Factory/ThreadPool在这里进行一些管理) )?
您可以使用WhenAll扩展方法.
var combinedTask = await Task.WhenAll(collection.Select(x => x.DoWork());
Run Code Online (Sandbox Code Playgroud)
它将同时启动所有任务并等待所有任务完成.