c# - 如何使用异步方法正确编写 Parallel.For

标签 c# .net task-parallel-library async-await

我将如何构造下面的代码以便调用异步方法?

Parallel.For(0, elevations.Count(), delegate(int i)
{
   allSheets.AddRange(await BuildSheetsAsync(userID, elevations[i], includeLabels));
});

最佳答案

Parallel.For() 不适用于 async 方法。如果您不需要限制并行度(即您可以同时执行所有任务),您可以简单地启动所有 Task 然后等待它们完成:

var tasks = Enumerable.Range(0, elevations.Count())
    .Select(i => BuildSheetsAsync(userID, elevations[i], includeLabels));
List<Bitmap> allSheets = (await Task.WhenAll(tasks)).SelectMany(x => x).ToList();

关于c# - 如何使用异步方法正确编写 Parallel.For,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19284202/

相关文章:

c# - C#从字符串中提取十进制数

.net - 随着应用程序运行时间的延长,.NET 单例的性能是否会降低?

c# - 在 ASP.NET MVC 中通过 CancellationToken 中止 AJAX 请求

c# - 如何强制 FileStream 文件的独占所有权

vb.net - Parallel.ForEach 每次给出不同的结果

c# - 并发网络请求性能问题

c# - VS2015单元测试项目找不到方法

c# - 无法反序列化 XML 字符串

c# - 获取配置文件的路径时使用 AppDomain 和 ConfigurationManager 有什么区别?

.net - SQL:在汇总表上将 1 列扩展为 3 列