Quando o AppDomain.ProcessExit não será chamado?
Ativando linha//1
abaixo fará o programa travar sem "proc exit" sendo impresso, mas no caso de linha//2
, "proc exit" será impresso. "não manipulado" btw é impresso em ambos os casos.
Por que a diferença e quais são as regras em geral? Obviamente, matar um aplicativo usando, por exemplo, o gerenciador de tarefas impedirá que a "proc exit" seja impressa, mas fora isso, quais são os casos em que ele não é impresso?
static void Main(string[] args)
{
Thread.GetDomain().UnhandledException +=
(sender, eventArgs) => Console.WriteLine("unhandled");
AppDomain.CurrentDomain.ProcessExit +=
(sender, eventArgs) => Console.WriteLine("proc exit");
//1 new Thread(_ => { throw new Exception(); }).Start();
//2 ThreadPool.QueueUserWorkItem(_ => { throw new Exception(); });
Thread.Sleep(1000);
return;