首页 > 后端开发 > C++ > 如何在 .NET 4.5 中高效运行并行异步任务并收集结果?

如何在 .NET 4.5 中高效运行并行异步任务并收集结果?

DDD
发布: 2025-01-13 07:16:42
原创
336 人浏览过

How Can I Efficiently Run and Collect Results from Parallel Async Tasks in .NET 4.5?

.NET 4.5中并行运行异步任务并收集结果

引言:

同时执行长时间运行的任务并收集其结果是.NET应用程序中的常见需求。在.NET 4.5中,随着异步编程的引入,传统的基于线程的方法已经发展起来。本文探讨在.NET 4.5中实现异步任务并行执行的最佳方法。

原始代码:

提供的代码演示了使用Task.Run()启动两个长时间运行的任务,然后使用Result检索其结果的基本方法。但是,此方法有一些局限性:

  • Sleep无法成为可以等待其他方法的异步方法。
  • 代码笨拙,没有利用新的语言特性。
  • 使用Result时可能会发生Result阻塞,这会影响性能。

无效代码:

通过调用异步方法创建非运行Task的尝试失败了,因为异步方法会立即开始执行。

最佳解决方案:

最佳解决方案包括使用长时间运行任务的异步版本并利用Task.WhenAll()方法。示例如下:

<code class="language-csharp">async Task<int> LongTask1() { 
  // ...长时间运行的任务1...
  return 0; 
}

async Task<int> LongTask2() { 
  // ...长时间运行的任务2...
  return 1; 
}

// ...
{
   Task<int> t1 = LongTask1();
   Task<int> t2 = LongTask2();
   await Task.WhenAll(t1,t2);
   //现在我们可以访问t1.Result和t2.Result
}</code>
登录后复制

此代码为LongTask1和LongTask2创建异步任务,然后使用Task.WhenAll()等待它们完成。这允许任务并发运行而不会阻塞。最后,可以使用t1.Result和t2.Result访问结果。

以上是如何在 .NET 4.5 中高效运行并行异步任务并收集结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板