管理具有不同返回类型的并发异步操作
此示例演示了如何同时执行多个异步任务(每个任务返回不同的结果类型)并高效地检索这些结果。 想象三个异步函数:
<code class="language-csharp">public class AsyncOperations { private async Task<Cat> FeedCatAsync() { ... } private async Task<House> SellHouseAsync() { ... } private async Task<Tesla> BuyCarAsync() { ... } }</code>
我们将使用 Task.WhenAll
同时运行这些并收集结果。
<code class="language-csharp">// Instantiate the class containing asynchronous methods var operations = new AsyncOperations(); // Initiate the tasks var catTask = operations.FeedCatAsync(); var houseTask = operations.SellHouseAsync(); var carTask = operations.BuyCarAsync(); // Execute concurrently and wait for completion await Task.WhenAll(catTask, houseTask, carTask); // Retrieve results var cat = await catTask; var house = await houseTask; var car = await carTask; // Process the results...</code>
Task.WhenAll
确保所有任务在继续之前完成。 await
关键字对于正确处理异步操作至关重要;它可以防止在等待结果时阻塞主线程。 虽然 Task.Result
提供了检索结果的替代方法,但由于潜在的阻塞问题,它通常不太受欢迎。 这种方法提供了一种干净有效的方法来管理具有不同返回值的并发异步任务。
以上是如何高效执行多个不同返回类型的异步任务并检索结果?的详细内容。更多信息请关注PHP中文网其他相关文章!