GC.Collect () ¿no recolecta inmediatamente?

En el curso de una discusión en el chat, escribí esta aplicación de consola.

Código:
using System;

class Program
{
    static void Main(string[] args)
    {
        CreateClass();
        Console.Write("Collecting... ");
        GC.Collect();
        Console.WriteLine("Done");
    }

    static void CreateClass()
    {
        SomeClass c = new SomeClass();
    }
}

class SomeClass
{
    ~SomeClass()
    {
        throw new Exception();
    }
}
Resultado:
Collecting... Done

Unhandled Exception: System.Exception: Exception of type 'System.Exception' was
thrown.
   at SomeClass.Finalize()

Hubiera esperado que la aplicación fallaraantes de Done fue impreso

No me importa mucho cómo hacerlo. Mi pregunta es,¿Por qué no?

Respuestas a la pregunta(4)

Su respuesta a la pregunta