public static async Task<TResult> TaskTimeoutAfter<TResult>(this Task<TResult> task, int timeout)
{
using (var timeoutCancellationTokenSource = new CancellationTokenSource())
{
var completedTask = await Task.WhenAny(task, Task.Delay(timeout, timeoutCancellationTokenSource.Token));
if (completedTask == task)
{
timeoutCancellationTokenSource.Cancel();
return await task;
}
throw new TimeoutException("The operation has timed out");
}
}
C# 任务设置超时取消
最新推荐文章于 2025-03-05 13:10:17 发布