优化 .NET 4.5 中的并行异步操作
.NET 4.5 提供了强大的异步编程功能,可以并发执行多个冗长的任务。 然而,一些初始实现可能显得过于复杂,并且缺乏异步方法固有的优雅性。 这个改进的示例解决了这些缺点。
增强的代码结构
以下精炼代码提供了更高效、简化的方法:
<code class="language-csharp">async Task GoAsync() { Console.WriteLine("Initiating Tasks"); Task<int> task1 = SleepAsync(5000); Task<int> task2 = SleepAsync(3000); await Task.WhenAll(task1, task2); int totalSleepTime = task1.Result + task2.Result; Console.WriteLine($"Total sleep time: {totalSleepTime} ms"); } private async Task<int> SleepAsync(int milliseconds) { Console.WriteLine($"Sleeping for {milliseconds} ms"); try { await Task.Delay(milliseconds); return milliseconds; } finally { Console.WriteLine($"Sleep for {milliseconds} ms COMPLETE"); } }</code>
主要改进:
GoAsync
现在是异步方法 (async Task
),允许使用 await
来管理任务完成情况。SleepAsync
是一个返回 Task<int>
的异步方法,反映了操作的异步性质。Task.WhenAll
有效地同时等待两项任务的完成,消除了显式 .Result
访问的需要并提高了性能。功能代码:
修改后的代码同时执行这两个任务,有效地收集结果。 该方法为.NET 4.5中并行异步任务执行提供了一种更干净、更简洁、更高效的解决方案。
以上是如何在.NET 4.5中高效运行并行异步任务?的详细内容。更多信息请关注PHP中文网其他相关文章!