Мне известно о том, как обрабатываются неисчислимые исключения при использовании Task
s, только выбрасывая необработанное в финализаторе, если пользовательский код его еще не «наблюдал».
Я также знаю, какнеобработанное исключение в асинхронном потоке (например, Action.BeginInvoke()
) перехватывается и перебрасывается при присоединяющемся вызове (например, Action.EndInvoke()
).
Хотя я не понимаю, как это не дает сбояпроцесс?
static void Main(string[] args)
{
var timer = new System.Timers.Timer() {Interval = 100};
timer.Elapsed += (o, e) => { throw new Exception(); };
timer.Start();
Console.ReadKey( true );
}