Kiedy aplikacja AppDomain.ProcessExit nie zostanie wywołana?

Włączanie linii//1 poniżej spowoduje awarię programu bez drukowania „proc exit”, ale w przypadku linii//2, „proc exit” zostanie wydrukowane. „nieobsługiwane” btw zostanie wydrukowane w obu przypadkach.

Dlaczego różnica i jakie są reguły? Oczywiście zabijanie aplikacji przy użyciu np. Menedżer zadań uniemożliwi wydrukowanie „proc exit”, ale poza tym, w jakich przypadkach nie zostanie wydrukowany?

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