¿Cuándo no se llamará a AppDomain.ProcessExit?

Línea de habilitación//1 a continuación hará que el programa se bloquee sin que se imprima "proc exit", pero en caso de línea//2, se imprimirá "proc exit". "no manejado" por cierto se imprime en ambos casos.

¿Por qué la diferencia, y cuáles son las reglas en general? Obviamente matando una aplicación usando, por ejemplo. el administrador de tareas evitará que se imprima "proc exit", pero aparte de eso, ¿cuáles son los casos en los que no se imprime?

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;

Respuestas a la pregunta(2)

Su respuesta a la pregunta