我有两个可以等待的未来。然而,我只想等待两个中的第一个完成,一旦发生就立即做其他事情。 有办法吗?
提前致谢!
是的,您可以使用异步编程概念来实现这一点,例如 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 替换为您实际的异步任务。