Jestem świadomy, jak przetwarzane są nieobsługiwane wyjątki podczas korzystania z Task
s, tylko wyrzucam nieobsługiwane do finalizatora, jeśli kod użytkownika jeszcze go nie "zaobserwował".Dlaczego nieobsługiwany wyjątek w wątku z zegarem nie powoduje awarii procesu?
Mam również świadomość, że nieobsługiwany wyjątek w wątku asynchronicznym (np. Action.BeginInvoke()
) jest przechwytywany i ponownie zgłaszany podczas połączenia (na przykład Action.EndInvoke()
).
Czego jednak nie rozumiem, to jak to się nie załamuje?
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);
}
Cóż, to było 4-6 godzin mojego życia, nigdy nie wrócę. Jaka straszna decyzja ze strony Microsoftu, aby to się nie zawiesić. –