ManualResetEventSlim.Wait () - время ожидания в TimeSpan против int - PullRequest
0 голосов
/ 30 апреля 2018

Вы можете использовать либо 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 дней).

Я подозреваю, что между этими перегрузками есть разница.

1 Ответ

0 голосов
/ 30 апреля 2018

Согласно Справочный источник для 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 наследников.

...