Originariamente inviato da fermat
in teoria questa riga:
GC.KeepAlive(t);

non dovrebbe evitare proprio questo comportamento?
No ... quella istruzione non impedisce al main di terminare.

Sostituiscilo con

Console.ReadKey();