.NET 4.5中并行运行异步任务并收集结果
引言:
同时执行长时间运行的任务并收集其结果是.NET应用程序中的常见需求。在.NET 4.5中,随着异步编程的引入,传统的基于线程的方法已经发展起来。本文探讨在.NET 4.5中实现异步任务并行执行的最佳方法。
原始代码:
提供的代码演示了使用Task.Run()启动两个长时间运行的任务,然后使用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中文网其他相关文章!