Комментарии 2
Вот и выросло то поколение, которое искренне удивляется тому, появление чего мы наблюдали в реальном времени. Пора на пенсию? 😅
Разбирал эту механику с дизасмом, если интересно: https://habr.com/ru/articles/1047532/
Если в двух абзацах, то:
Проблема лежит даже не этажом ниже, а в самом подвале. Корнями в обработку оконных сообщений в COM. Древний механизм, который нельзя просто выкинуть, иначе все поломается.EventHandler возвращает void не потому, что так решили в .NET. Событие в UI поднимается из WndProc, а сообщение туда попало через PostMessage. У PostMessage нет возвращаемого значения, нет способа дождаться обработки, и нет места, куда положить ошибку. Все ваши проблемы - это просто исключение некуда деть, операцию не дождаться, побочные эффекты приезжают когда попало - это ровно свойства PostMessage, увиденные из C#. То есть async void не некий компромисс с моделью событий .NET, а компромисс с обработкой оконных сообщений в COM, которая старше C# лет так на пятнадцать.
Дальше куда чудесатее, но уверен, вы справитесь сами )

Async void в C#: Его опасности и почему он все еще существует