C#的Timer控件的Tick事件是不是一个异步(多线程)委托调用

C#的Timer控件的Tick事件是否一个异步(多线程)委托调用

private void timer1_Tick(object sender, EventArgs e)
{
//假如这有一堆无意义的代码(假如变态的循环)
}
我想问,如果Interval时间过了,但事件处理程序里的代码没有执行完,此Tick事件是否会异步调用另一个新的事件处理程序,Tick事件是多线程执行吗? 
------解决方案--------------------
Windows 窗体 Timer 组件是单线程组件,精度限定为 55 毫秒。如果您需要更高精度的多线程计时器,请使用 System.Timers 命名空间中的 Timer 类。 
 我的理解是
Windows 窗体 Timer 组件 当时间到了他会触发一个timer1_Tick,不过是加载在主线程上运行的,如果主线程第一个timer1_Tick 事件处理不完,你又来第二个事件,就像主线程中别的程序一样,等上一个处理完了再处理下一个或是别的在主线程中的程序或事件。
而System.Timers ,会在时间到时线程池中取一条空的线程执行你的命令,两个就两个长时间的运行会有两个Elapsed 事件调用的线程中并行或穿差进行,

------解决方案--------------------
你这个是System.Windows.Forms.Timer,该控件是异步执行的,如果时间到了,引发的事件会被异步委托回调到控件所在线程上执行,因为是异步的,所以不管上次是否执行完毕,当前的仍旧会被排队等待执行。因此使用这类控件,最好在timer1_Tick里面一开始就添加Stop代码,将计时器停止计时,待处理完毕后使用Start开启即使,也就是事件处理过程不包含在计时中。