Когда Task.Delay может генерировать исключение ObjectDisposedException? - PullRequest
1 голос
/ 02 ноября 2019

Согласно документации, Task.Delay может выдать исключение ObjectDisposedException при удалении токена.

Однако я не могу найти в CancellationToken ничего, что указывало бы на его удаление.

Кроме того, удаление CancellationTokenSource не вызывает Task.Delay может вызвать исключение ObjectDisposedException.

Так что может вызвать Task.Delay выбросить ObjectDisposedException?

Ссылка: https://referencesource.microsoft.com/#mscorlib/system/threading/Tasks/Task.cs,5fb80297e082b8d6,references

1 Ответ

0 голосов
/ 05 ноября 2019

Вот пример кода C #, который пытается воспроизвести задокументированное поведение:

    var cts = new CancellationTokenSource();
    cts.Dispose();
    await Task.Delay(200, cts.Token); // System.ObjectDisposedException

На самом деле это не Task.Delay, который выбрасывает, а попытка доступа к свойству Token удаленногоCancellationTokenSource. Так что нет, мне не удалось воспроизвести задокументированное поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...