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

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 吗?请问怎么解决呢?
谢谢!
...全文
224 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pamgu 2017-02-15
  • 打赏
  • 举报
回复
c# 中有两种 timer, 一个是form,一个在threading 中,注意检查一下。
wugamp 2017-02-09
  • 打赏
  • 举报
回复
难道没人回?送分了送分了,就看看本版有多少人气了!
wugamp 2017-02-07
  • 打赏
  • 举报
回复
自己顶,求回复

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧