System.Windows.Forms.Timer
我的表单中有 2 个全局变量。两者都在表单的构造函数中初始化。但还没有开始。构造函数启动一个新线程,该线程启用并启动两个计时器。显然都是跨线程,但它不会抛出任何跨线程异常。但它甚至不起作用。它不会触发该Timer.Tick
方法。这是代码:
第一种方法:
在表单构造函数中:
KeepMeAliveTimer = new Timer(); //timer 1
KeepMeAliveTimer.Interval = 15000;
KeepMeAliveTimer.Tick += KeepMeAlive;
timer1 = new Timer(); //timer 2
timer1.Interval = 15000;
timer1.Tick += timer1_Tick;
//started a new thread
在新主题中:
//after performing some tasks, it enables the timers
KeepMeAliveTimer.Enabled = true; //timer 1
KeepMeAliveTimer.Start();
timer1.Enabled = true; //timer 2
timer1.Start();
但它没有触发 Timer 的滴答事件,甚至没有抛出任何异常。
第二种方法:
但是当我Timers
在同一个线程(主线程)中初始化并启用它们时,它们工作得很好:
KeepMeAliveTimer = new Timer(); //timer 1
KeepMeAliveTimer.Interval = 15000;
KeepMeAliveTimer.Tick += KeepMeAlive;
KeepMeAliveTimer.Enabled = true;
KeepMeAliveTimer.Start();
timer1 = new Timer(); //timer 2
timer1.Interval = 15000;
timer1.Tick += timer1_Tick;
timer1.Enabled = true;
timer1.Start();
现在的问题是;如果没有任何异常,为什么第一种方法不起作用?