Home > Backend Development > C++ > How Can I Efficiently Await and Retrieve Results from Multiple Concurrent Tasks in C#?

How Can I Efficiently Await and Retrieve Results from Multiple Concurrent Tasks in C#?

DDD
Release: 2025-01-28 03:06:14
Original
882 people have browsed it

How Can I Efficiently Await and Retrieve Results from Multiple Concurrent Tasks in C#?

Managing Concurrent Tasks and Retrieving Results in C#

A frequent challenge in C# programming involves handling multiple asynchronous tasks that need to run concurrently and return individual results. This article demonstrates an efficient approach using Task.WhenAll.

Here's a scenario: Imagine three independent tasks: feeding a cat, selling a house, and buying a car. Each task is asynchronous and produces a unique result.

private async Task<Cat> FeedCat() { /* ... */ }
private async Task<House> SellHouse() { /* ... */ }
private async Task<Tesla> BuyCar() { /* ... */ }

async Task Main()
{
    var catTask = FeedCat();
    var houseTask = SellHouse();
    var carTask = BuyCar();

    await Task.WhenAll(catTask, houseTask, carTask);

    var cat = await catTask;
    var house = await houseTask;
    var car = await carTask;
}
Copy after login

The Task.WhenAll method initiates all three tasks concurrently. After WhenAll completes (signaling all tasks have finished), you can safely retrieve each task's result using individual await operations. Asynchronous methods implicitly return already-started tasks.

While using Task.Result is possible after WhenAll, because task completion is guaranteed, the await approach is generally recommended for its improved readability and robustness in more complex scenarios.

The above is the detailed content of How Can I Efficiently Await and Retrieve Results from Multiple Concurrent Tasks in C#?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template