Информация об изменениях

Сообщение Re[4]: Почему не отменяется задача? от 15.03.2021 22:34

Изменено 15.03.2021 22:46 Passerby

Re[4]: Почему не отменяется задача?
Здравствуйте, Mystic Artifact
Спасибо. Код последнего метода работает. Насколько я понял все дело в том, что надо было не Wait, а await.
MA> 2. В SignalNoServer v.Wait(ct) — бросает исключение при отмене...
Метод с v.Wait(ct); не работает и исключение не бросается.
Непонятно, почему не срабатывает if (!ct.IsCancellationRequested). Разве IsCancellationRequested не сигнализирует о том, что был вызван Cancel(), не важно передан Token далее в асинхронный метод или по ошибке в какой-нибудь в синхронный метод и даже не важно передавался ли Token в какой-нибудь метод или нет. Главное, был вызван Cancel, значит свойство IsCancellationRequested объекта CancellationTokenSource() должно было поменяться.
MA> 3. task.Dispose(); — нельзя делать без проверки состояния задачи, иначе получишь опять исключение.
Если код верен, то задача снимается. Т.е. проверку надо делать во время отладки и проверки кода и после, в рабочей версии, проверка не нужна?
Re[4]: Почему не отменяется задача?
Здравствуйте, Mystic Artifact
Спасибо. Код последнего метода работает. Насколько я понял все дело в том, что надо было не Wait, а await.
MA> 2. В SignalNoServer v.Wait(ct) — бросает исключение при отмене...
Метод с v.Wait(ct); не работает и исключение не бросается.
MA> 3. task.Dispose(); — нельзя делать без проверки состояния задачи, иначе получишь опять исключение.
Если код верен, то задача снимается. Т.е. проверку надо делать во время отладки и проверки кода и после, в рабочей версии, проверка не нужна?