您可以使用ManualResetEventSlim.Wait(TimeSpan timeout)
或ManualResetEventSlim.Wait(int millisecondsTimeout)
。
但int.MaxValue
(2,147,483,647 - 约24.85天)远低于TimeSpan.MaxValue.TotalMilliseconds
(922,337,203,685,477 - 约10,675,199.11天)。
我怀疑这些重载的使用之间存在差异。
答案 0 :(得分:0)
根据Reference Source for mscorlib(.NET Framework 4.7.1):
public bool Wait(TimeSpan timeout)
{
long totalMilliseconds = (long)timeout.TotalMilliseconds;
if (totalMilliseconds < -1 || totalMilliseconds > int.MaxValue)
{
throw new ArgumentOutOfRangeException("timeout");
}
return Wait((int)totalMilliseconds, new CancellationToken());
}
Wait(TimeSpan timeout)
检查TotalMilliseconds
是否为正int
值范围,然后调用Wait(int millisecondsTimeout)
。
所以无论如何最大等待值将是int.MaxValue
。对于所有WaitHandle
个继承者也是如此。