Функциональность 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 или почему выдается исключение. Что именно здесь происходит?

0 ответов

Другие вопросы по тегам