Методы async void в C# следует использовать только для обработчиков событий. 2 Это единственный способ обеспечить работу асинхронных обработчиков событий, так как у событий нет типов возвращаемых значений. 2
В других случаях использование async void может быть нежелательно, так как такие методы имеют ряд недостатков: 15
- Сложность обработки исключений. 15 Исключения, сгенерированные в async void-методе, не могут быть перехвачены вне этого метода. 1
- Возможные побочные эффекты. 1 Методы async void могут вызывать нежелательные последствия, если вызывающая сторона не ожидает, что они будут асинхронными. 1
- Сложность тестирования. 1 Из-за различий в обработке ошибок и компоновке трудно писать модульные тесты, которые вызывают async void-методы. 1
Рекомендуется избегать использования async void и вместо него применять async Task. 1