Функциональность ManualResetEvent.WaitOne с аргументом истечения времени ожидания 0
Я имел дело с кодом, который имеет несколько вызовов ManualResetEvent
Ждем одного звонка.
Из документации MSDN,
Если время ожидания равно нулю, метод не блокируется. Он проверяет состояние дескриптора ожидания и немедленно возвращается.
Теперь это мой кусок кода:
Console.WriteLine("abc");
if (manualResetEventObject.WaitOne(0, false))
return;
Console.WriteLine("def");
//More function calls
Здесь, исходя из документа, я ожидал, что он напечатает abc, вернется из WaitOne и напечатает def. manualResetEventObject
не сигнализируется в этой точке, и так WaitOne
возвращаемое значение должно быть ложным.
Однако def никогда не печатается, и я вижу ThreadInterruptedException
быть брошенным (есть try
/catch
блок, содержащий это).
Я не понимаю, почему это не печатает def или почему выдается исключение. Что именно здесь происходит?