在C#中,Wait
方法本身不能直接設置超時時間。但是,你可以使用Task
類和Task.WhenAny
方法來實現帶有超時時間的等待。下面是一個示例:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// 創建兩個任務,一個模擬長時間運行的任務,另一個模擬短時間運行的任務
var longRunningTask = Task.Run(() =>
{
Console.WriteLine("Long running task started.");
Thread.Sleep(5000); // 模擬長時間運行的任務
Console.WriteLine("Long running task completed.");
});
var shortRunningTask = Task.Run(() =>
{
Console.WriteLine("Short running task started.");
Thread.Sleep(1000); // 模擬短時間運行的任務
Console.WriteLine("Short running task completed.");
});
// 使用 Task.WhenAny 等待兩個任務中的任意一個完成,并設置超時時間
var completedTask = await Task.WhenAny(longRunningTask, shortRunningTask, TimeSpan.FromSeconds(3));
// 檢查完成的任務是否是長時間運行的任務
if (completedTask == longRunningTask)
{
Console.WriteLine("Long running task completed first.");
}
else
{
Console.WriteLine("Short running task completed first.");
}
}
}
在這個示例中,我們創建了兩個任務,一個模擬長時間運行的任務,另一個模擬短時間運行的任務。然后,我們使用Task.WhenAny
方法等待這兩個任務中的任意一個完成,并設置超時時間為3秒。如果長時間運行的任務在3秒內完成,completedTask
將指向該任務;否則,completedTask
將指向短時間運行的任務。