定时器关闭了,却还在用?

lgstudyvc 2013-05-08 03:54:33
定义一个类CMyTimePlan,里面Timer Mytimer = new Timer();
对外提供了start和close接口

在另外一个类中使用CMyTimePlan的对象;只调用了一次start接口
使用正常

可是在调用close接口后,正常执行;但不知为什么又执行了CMyTimePlan中start
于是就停止不了啦

什么原因?

注:类定义如下(public会影响不?)
public class classTVplan{
.....
}
...全文
463 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
vo__ov 2013-05-08
  • 打赏
  • 举报
回复
写错了 ,应该这样 if (timerT.Tick==null) { timerT.Tick += new EventHandler(timerT_Tick); }
vo__ov 2013-05-08
  • 打赏
  • 举报
回复
timerT.Tick += timerT.Tick ?? new EventHandler(timerT_Tick);
Sheldon_Lou 2013-05-08
  • 打赏
  • 举报
回复
会不会是Interval 太小了,,导致来不及你点了之后其实已经好多个tick过去了
gx831218 2013-05-08
  • 打赏
  • 举报
回复
你在close事件中获取一下当前timer的状态,看看是否是关闭的了。如果不是,说明没有关闭成功,那就再找其他原因。
lgstudyvc 2013-05-08
  • 打赏
  • 举报
回复
引用 1 楼 JTZP007 的回复:
把代码贴出来看看
看上代码
vingsa8352 2013-05-08
  • 打赏
  • 举报
回复
刚测试了下,不会弹出OK框
lgstudyvc 2013-05-08
  • 打赏
  • 举报
回复
引用 4 楼 gx831218 的回复:
设置断点或者写一个log文件(每次进一个文件就记一次log,跟踪一下。),看看程序运行的过程。
我在Timer(List<string> CPlan, int TLength, int iNo) 和timerTV_Tick(object sender, EventArgs e) 处都加了断点,执行完close后就始终执行timerTV_Tick了
gx831218 2013-05-08
  • 打赏
  • 举报
回复
设置断点或者写一个log文件(每次进一个文件就记一次log,跟踪一下。),看看程序运行的过程。
gx831218 2013-05-08
  • 打赏
  • 举报
回复
正常是不可能出现这种情况的,除非实例化多次。
lgstudyvc 2013-05-08
  • 打赏
  • 举报
回复
代码示意如下 public class CMyTimePlan { public void Timer(List<string> CPlan, int TLength, int iNo) { timerT.Start(); timerT.Tick += new EventHandler(timerT_Tick); timerT.Interval = 1; } public void TimerClose()//关闭定时器 { timerT.Stop(); } public void timerTV_Tick(object sender, EventArgs e) { MessageBox.Show("ok"); } } 外部使用: CMyTimePlan tPlan = new CMyTimePlan(); tPlan.Timer("ok", 6, 9); 关闭 tPlan.TimerClose(); 问题是执行了TimerClose后,在CMyTimePlan中仍在继续执行timerTV_Tick,一直弹出ok框
JTZP007 2013-05-08
  • 打赏
  • 举报
回复
把代码贴出来看看

110,545

社区成员

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

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

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