timer.Interval = 5000;
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
Does \"timer_Tick\" method start in a new
A timer doesn't really "run". That is, when you start a timer, the operating system creates some data structures that tell it to issue a "tick" periodically--at whatever period you've specified. But it's not like the timer is sitting there spinning, eating CPU resources while it waits for the proper time. All of the .NET timer types and the Windows API timer types work this way.
The difference is in what happens when it comes time to make a tick. As @David Hefferman pointed out, with System.Windows.Forms.Timer, the Elapsed event handler is called on the same thread that created the timer. System.Threading.Timer calls its callback on a thread pool thread. Under the hood, System.Timers.Timer is called on a pool thread, but you can use the SynchronizingObject property to raise the Elapsed event on the UI thread or any other thread.