等待东京的两个期货之一

问题描述 投票:0回答:1

我有两个可以等待的未来。然而,我只想等待两个中的第一个完成,一旦发生就立即做其他事情。 有办法吗?

提前致谢!

asynchronous rust async-await
1个回答
0
投票

是的,您可以使用异步编程概念来实现这一点,例如 C# 等语言中的 async/await。您可以使用 Task.WhenAny 方法等待第一个任务完成。这是一个简单的例子:

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // Create two tasks
        Task<int> task1 = Task.Run(() => { return TaskMethod(1); });
        Task<int> task2 = Task.Run(() => { return TaskMethod(2); });

        // Wait for the first task to complete
        Task<int> firstCompletedTask = await Task.WhenAny(task1, task2);

        // Print the result of the completed task
        Console.WriteLine($"Task {firstCompletedTask.Result} completed first.");

        // You can continue with other tasks or code here
    }

    static int TaskMethod(int taskId)
    {
        Task.Delay(taskId * 1000).Wait(); // Simulating some work
        Console.WriteLine($"Task {taskId} complete");
        return taskId;
    }
}

在此示例中,Task.WhenAny 用于等待第一个任务完成。然后打印已完成任务的结果。您可以将 TaskMethod 替换为您实际的异步任务。

© www.soinside.com 2019 - 2024. All rights reserved.