如何停止Timer,我的Timer停止不了。在线等,急时送分-100

刘物峰 2010-09-15 02:51:46
    void SendInfo (string sInfo )
{
timer1.Enabled = true;
serialPort1.DataReceived += new SerialDataReceivedEventHandler ( serialPort1_DataReceived );
}
public void serialPort1_DataReceived ( object sender , SerialDataReceivedEventArgs e )
{
//如果收到数据就去停掉Timer
StopTimer();
}
void StopTimer ( )
{
lock ( this )
{
timer1.Enabled = false; //timer停止不了
}
}

serialPort1.DataReceived一定开了一个线程在收数据,
问题就是如何在另一个线程中停止掉我的Timer
曾想过:
1.用this.Invoke ( new Event_StopTimer ( StopTimer ) );
2.System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
结果没有停止掉
...全文
261 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘物峰 2010-09-15
  • 打赏
  • 举报
回复
我找到了方法,我不在
public void serialPort1_DataReceived ( object sender , SerialDataReceivedEventArgs e )
{
//如果收到数据就去停掉Timer
StopTimer();
}

这里去停Timer
我手动去停Timer,在窗体上加了一个button,现在只有这个办法了

结帖率高原因,我坚信“出来发贴,一定要还的”,不管是否满意只要发帖了就要结帖,

谢谢你们

缭绕飘渺 2010-09-15
  • 打赏
  • 举报
回复
楼主断点单步跟踪下看看你那个stop的方法执行了没
或者在stop方法中来个messagebox输出下看看能否执行到
兔子-顾问 2010-09-15
  • 打赏
  • 举报
回复
代码贴太少了。就这些,没可能出错。
刘物峰 2010-09-15
  • 打赏
  • 举报
回复
这个timer的用处就是发送数据后,检查是否超时,
收到数据要停这个Timer,
发送后的时间大于xx时间也要停timer,

public void serialPort1_DataReceived ( object sender , SerialDataReceivedEventArgs e )
{
{...
//如果收到数据就去停掉Timer
...}
StopTimer();
}

levitate 2010-09-15
  • 打赏
  • 举报
回复
public void serialPort1_DataReceived ( object sender , SerialDataReceivedEventArgs e )
{
//如果收到数据就去停掉Timer
StopTimer();
}

这个事件你能引发不,你先查查看看
刘物峰 2010-09-15
  • 打赏
  • 举报
回复
不是吧,我也不知道这什么,只是想请各位帮帮助,先谢谢了
gohappy2008 2010-09-15
  • 打赏
  • 举报
回复
你可能是开启了多个线程
刘物峰 2010-09-15
  • 打赏
  • 举报
回复
private void timer1_Tick ( object sender , EventArgs e )
{
{...
//如果超时
...}
StopTimer();
}
兔子-顾问 2010-09-15
  • 打赏
  • 举报
回复
未结帖数:-9
缭绕飘渺 2010-09-15
  • 打赏
  • 举报
回复
围观楼主的结帖率
133.33%
怎么来的啊
兔子-顾问 2010-09-15
  • 打赏
  • 举报
回复
不存在。你如何判断无法停止的?
timer的事件代码贴来看看。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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