Проследите всю цепочку await до вызывающего метода
Зачем
Зачем это нужно
Разделите отмену операции и её обычное исключение
Сравните сервисный метод с обработчиком события, где допустим async void
Вопросы
Частые вопросы
Как попросить разобрать async void в C#?
Разбери C#: async void Save(){await Task.Delay(10); throw new InvalidOperationException("сбой");} Метод вызывается из обычного сервиса, не из обработчика события. Покажи вариант с Task и ожидающим вызывающим методом, объясни обработку исключения и передачу CancellationToken. Предложи тест отмены и тест отказа без реального сохранения. Не выполняй код.
Какие сведения о .NET нужны для полезного ответа?
Укажите версии SDK и целевого фреймворка, тип приложения и вставьте вызывающий код вместе с методом. Уберите секреты из конфигурации. Попросите минимальное исправление сигнатуры, затем обновите и проверьте все места вызова у себя.
Как проверить распространение ошибки и отмены?
В локальном тесте дождитесь Task: обычный отказ должен быть наблюдаем вызывающим кодом. Отдельно отмените токен и проверьте предусмотренный путь отмены. Успешное завершение не должно сообщаться до окончания операции.
Почему замена await на Result может навредить?
Синхронное ожидание блокирует поток, а в некоторых окружениях создаёт условия для взаимной блокировки. Совет зависит от контекста приложения. Не меняйте модель ожидания только ради исчезновения предупреждения компилятора.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.