Как удаление дескриптора ожидания не вызывает бесконечный цикл?C#

Место общения программистов C#
Ответить
Anonymous
 Как удаление дескриптора ожидания не вызывает бесконечный цикл?

Сообщение Anonymous »

Из того, что я вижу в исходном коде WaitHandle в обоих

Код: Выделить всё

src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandle.cs

Код: Выделить всё

src/runtime/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandle.cs
а именно:

Код: Выделить всё

    public virtual void Close() => Dispose();

protected virtual void Dispose(bool explicitDisposing)
{
_waitHandle?.Close();
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
Похоже, что вызов Close() вызовет Dispose(), который вызовет Dispose(bool), который вызовет Close()...

второй стих, такой же, как и первый, для вызова Dispose().
Так как же это не приведет к бесконечному циклу ?

Тем более, что ни один из этих методов не делает ничего, что могло бы сделать Насколько я понимаю, _waitHandle имеет значение null.

Подробнее здесь: https://stackoverflow.com/questions/793 ... inite-loop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»