As in the notes above, allways use the Dispose method, when the timer is no longer needed.
See why, running the following code once without t.Dispose(), and once with the t.Dispose():
using System;
using System.Threading;
public sealed class App
{
public static void Main()
{
Timer t = new Timer(M, null, 0, 2000);
Console.ReadLine();
//t.Dispose();
}
static void M(Object o)
{
Console.WriteLine("In M: " + DateTime.Now);
GC.Collect();
}
}