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;

questionAnswers(2)

yourAnswerToTheQuestion