首页 >后端开发 >C++ >如何在 .NET 4.5 中同时运行两个异步任务并获取其结果?

如何在 .NET 4.5 中同时运行两个异步任务并获取其结果?

Linda Hamilton
Linda Hamilton原创
2025-01-13 07:34:42491浏览

How Can I Run Two Async Tasks Concurrently and Get Their Results in .NET 4.5?

在 .NET 4.5 中高效执行并发异步任务并检索结果

本指南演示了一种在 .NET 4.5 框架内同时运行两个异步任务并有效收集各自结果的简化方法。 以前使用 Task.Run()Thread.Sleep() 的方法对于异步操作来说不太理想。

这是一个改进的解决方案:

<code class="language-csharp">async Task<int> LongTask1()
{
    // Simulate a long-running operation
    await Task.Delay(1000); // Replace with your actual asynchronous task
    return 0;
}

async Task<int> LongTask2()
{
    // Simulate a long-running operation
    await Task.Delay(1500); // Replace with your actual asynchronous task
    return 1;
}

// ... within your main method ...
{
    Task<int> task1 = LongTask1();
    Task<int> task2 = LongTask2();

    await Task.WhenAll(task1, task2);

    // Access results after both tasks have completed
    int result1 = task1.Result;
    int result2 = task2.Result;
    // ... process result1 and result2 ...
}</code>

这段精炼的代码利用了async/await的力量:

  • LongTask1LongTask2 是代表长时间运行操作的异步方法。 请记住将 Task.Delay() 替换为您实际的异步逻辑。
  • Task.WhenAll(task1, task2) 确保两项任务在继续之前完成,有效同步结果。
  • task1.Resulttask2.Result 提供对每个任务执行完成后的返回值的访问。

与以前的方法相比,这种方法提供了更干净、更高效、真正异步的解决方案,消除了对 Task.Run() 和像 Thread.Sleep() 这样低效的阻塞调用的需要。 这是在 .NET 4.5 中处理并发异步任务的推荐方法。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn