关于定时执行的问题
我在服务里设了个Timer,每隔30秒扫描一次.我第一次的数据执行时间可能会超过30秒,而30秒后Timer又执行了,请问如何把上一次的进行结束掉.我发现Timer是多线程的,每次的一个反复都重开一个线程,是这样吗?
------解决方案--------------------我发现Timer是多线程的,每次的一个反复都重开一个线程,是这样吗? 
 ______________________________________________________________   
 服务器常用的Timer都是多线程的,其线程是从本进程的线程池中取出了一个. 但是要强制关掉它恐怕不是好方法,第一不容易拿到线程池中的那个线程,第二在它扫描一半的时候终止可能会产生不可预料的结果.    
 我们自己碰到这种情况是先检查前一个Timer结束了没有,如果还没有,这个Timer就什么也不做,自动结束,再等下一次Timer触发.
------解决方案--------------------是多线程,解决这样的问题,加个判断就好了   
 private bool m_IsWorking = false;   
 private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
 { 
             if (m_IsWorking) 
                 return;   
             m_IsWorking = true; 
             // 开始调用方法 
             workAsynchronism(); 
             m_IsWorking = false; 
 }