При использовании async
/ await
исключения автоматически разворачиваются на сайте await
. При использовании Task
и .Wait()
любое исключение завершается, когда они выходят из Task
, и, таким образом, получение информации требует, чтобы вы перешли в свойство Task.Exception
, так как они не распространяйте стек вызовов.
Методы, возвращающие Task
- такие как Task.Run
или async
методы, будут помещать любые исключения из возвращаемого Task
. Вам решать это исключение. Обычно это делается с помощью await
, например:
await Task.Run(() => { throw ... });
В вашем случае проблема в этой строке:
result = OnSomeEvent((s, ea) => RunSomeTask());
В этом коде RunSomeTask
возвращает Task
и что Task
никогда не ожидается. Чтобы наблюдать за исключением, вы должны await
выполнить эту задачу.