gpt4 book ai didi

c# - Task.Delay 超过 int.MaxValue 毫秒

转载 作者:太空狗 更新时间:2023-10-29 17:40:11 26 4
gpt4 key购买 nike

可告知 Task.Delay 延迟的最长持续时间为 int.MaxValue 毫秒。创建将延迟超过该时间的 Task 的最简洁方法是什么?

// Fine.
await Task.Delay(TimeSpan.FromMilliseconds(int.MaxValue));

// ArgumentOutOfRangeException
await Task.Delay(TimeSpan.FromMilliseconds(int.MaxValue + 1L));

最佳答案

您无法使用单个 Task.Delay 实现这一点,因为它在内部使用仅接受 int 的 System.Threading.Timer

但是,您可以一个接一个地使用多个等待来做到这一点。这是最干净的方法:

static async Task Delay(long delay)
{
while (delay > 0)
{
var currentDelay = delay > int.MaxValue ? int.MaxValue : (int) delay;
await Task.Delay(currentDelay);
delay -= currentDelay;
}
}

关于c# - Task.Delay 超过 int.MaxValue 毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27995221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com