日期:2014-05-16  浏览次数:20863 次

在串口DataReceived中停止、启动定时器
如题,我想在串口的DataReceived中停止一个定时器,然后再在别的地方启动这个定时器,但是启动不了。

而我在DataReceived中,启动一个定时器也启动不了。(不执行timer_Tick)

这个是什么情况啊?大神们来帮帮忙啊,小弟第一次写串口通信,有点晕。先谢过!~
------解决方案--------------------
引用:
Quote: 引用:

因为这是跨线程操作,虽然没报异常,但实际上即使启动了定时器,但定时器也不会正常工作,用Invoke执行对定时器的启动即可。或者使用System.Timer名称空间下的定时器,这样即使在DataReceived事件里对定时器进行启动或关闭也是有效的


该怎么写啊?完全是晕的。比如:我要在DataReceived中停止定时器1,启动定时器2


引用:
Quote: 引用:

因为这是跨线程操作,虽然没报异常,但实际上即使启动了定时器,但定时器也不会正常工作,用Invoke执行对定时器的启动即可。或者使用System.Timer名称空间下的定时器,这样即使在DataReceived事件里对定时器进行启动或关闭也是有效的


该怎么写啊?完全是晕的。比如:我要在DataReceived中停止定时器1,启动定时器2


你去看下委托,举个简单的例子
//在DataReceivede写下面这句:
this.Invoke(new EventHandler(handleTimer));

//委托方法
private void handleTimer(object sender,EventArgs e)
{
     timer1.Stop();
     timer2.Start();
}