我正在使用两个实例System.Threading.Timer
来触发定期重复的 2 个任务。
我的问题是:如果计时器被禁用,但在那个时间点,这个计时器正在线程上执行它的回调,那么Main
方法会退出,还是会等待执行的回调完成?
在下面的代码中,Method1RunCount
使用 lock 语句进行同步读写(这部分代码下面没有显示)。每次运行结束时timer1
递增1 的回调。Method1RunCount
static void Main(string[] args)
{
TimerCallback callback1 = Method1;
System.Threading.Timer timer1 = new System.Threading.Timer(callback1,null,0, 90000);
TimerCallback callback2 = Method2;
System.Threading.Timer timer2 = new System.Threading.Timer(callback2, null, 0, 60000);
while (true)
{
System.Threading.Thread.Sleep(250);
if (Method1RunCount == 4)
{
//DISABLE the TIMERS
timer1.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);
timer2.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);
break;
}
}
}