通信线程中怎样使用定时器?
编程环境 C# ,用 SerialPort 做串口通信。
为了发现超时,在串口通信线程中创建一个定时器,代码如下:
public void comm_TimeOut2(object sender, EventArgs e)//定时器响应函数
{
int i = 3;//这句代码是象征性的,其实是要修改几个全局变量
System.Windows.Forms.Timer t = (System.Windows.Forms.Timer)sender;
t.Stop();//关闭本定时器,防止重复运行
}
System.Windows.Forms.Timer oCommTimer = new System.Windows.Forms.Timer();
private void Thread_param(object oParam) //这是个带参数的线程,在主线程中用 new Thread 来启动它
{
oCommTimer.Interval = 300;
oCommTimer.Tick += new EventHandler(comm_TimeOut2);
oCommTimer.Start();
}
结果发现:定时器设置成功了,enabled 也是 true 了,但就是不进入响应函数,等于是没有运行。
但是,如果把线程里的启动代码挪到按钮里,就正常运行了。
难道只能在主线程中使用 System.Windows.Forms.Timer 吗?请问怎么解决呢?
谢谢!