• 全部
  • 问答

通信线程中怎样使用定时器?

wugamp 2017-01-19 10:23:20
编程环境 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 吗?请问怎么解决呢?
谢谢!
...全文
200 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pamgu 2017-02-15
c# 中有两种 timer, 一个是form,一个在threading 中,注意检查一下。
回复
wugamp 2017-02-09
难道没人回?送分了送分了,就看看本版有多少人气了!
回复
wugamp 2017-02-07
自己顶,求回复
回复
发帖
通信技术
创建于2007-08-27

4029

社区成员

通信技术相关讨论
申请成为版主
帖子事件
创建了帖子
2017-01-19 10:23
社区公告
暂无公告