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

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

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

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

什么原因?

注:类定义如下(public会影响不?)
public class classTVplan{
.....
}
...全文
523 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
  • 打赏
  • 举报
回复
把代码贴出来看看
提醒任务,定是闹钟定时关机,请花三分钟时间仔细阅读本文档,使你对定时器有一定 的了解,从而更方便地使用定时器。 ★注意事项: 1、定时器是使用VB5编译的,所以程序运行需要VB5运行库 (MSVBVM50.DLL)的支持。WIN98以后的操作系统都包含这个文件。 这个文件也可以在WIN98第一版安装盘内的WIN98_33.CAB中找到。 2、有时选择某种时钟款式后会提示缺少字体,这是因为你的WINDOWS 并没有安装定时器所需要的字体。请到我的主页 (http://smalllab.126.com)下载相应的字体。 3、如果用户遇到其它问题,请先查阅定时器目录下的FAQ.TXT。如 果该文件中的说明也不能帮助你解决问题,那么请写信给我,并说 明你使用的定时器版本、WINDOWS版本等等详细情况。 ★定时器特点: 1、独有三种设置提醒时间的方式,令该程序更方便易用。 2、可以设置按时间、日期、星期、月份或年份进行定时提醒。 3、全面支持WINDOWS 9X/NT/2000/XP等操作系统定时注销、重启、关 闭计算机及断开网络连接,并可设置强制关机!!! 4、可以定时打开其它程序或其它的文件。 5、支持半点报时、正点报时,支持最上层显示,支持播放提醒声音文 件。 6、附带一个精确至百分之一秒的秒表(计时器),从中可查看Windows 和定时器运行了多长时间。 7、附带系统锁定功能,用户离开计算机时可以暂时锁定计算机。 8、软件连安装程序小于100KB,方便网友下载使用。 ★新手上路: 如果你是新使用定时器的用户,你可以尝试用鼠标双击或右键单击定时 器的主窗口,从弹出的窗口或菜单,你可以使用定时器的大部份功能。 ★命令行命令: 定时器支持以下命令行命令: /logoff 注销系统 /reboot 重新启动计算机 /shutdown 关闭计算机 /hangup 断开网络连接 /force 此参数可与/logoff、/reboot、/shutdown联用,用来设置强制 关机 /after:??:??:??:可将上面几个参数延迟??:??:??时间后执行 例如在命令行中输入:“timer /after:00:30:00 /shutdown”,就会在 启动定时器三十分钟后自动关闭计算机。 注:此功能受防止程序重复运行的限制。 ★扩展功能: 用Ctrl+鼠标右键单击定时器窗口,会弹出一个扩展功能的菜单用户从中 可以进行设置日期、时间;启动屏幕保护;弹出、关闭光驱;重启、关 闭计算机;断开网络连接等等系统操作。 ★版权信息: 1、定时器是一个免费软件。 2、任何人都可以分发和使用本软件,但不得以此作为牟利用途。 3、定时器的使用权归用户,但所有权为作者所有。 ★特别呜谢: 感谢whomi、gk、monkey、china、小林、gwx、陈宗庆、KTAND、冯、 郭金宝、雷、山猫、zhuolijian、赵巍、amw、sun、伟展、hally、 wangnj、zhaocd、lele、cjh、梁广全等,他们给定时器提供了很好的建 议或反馈信息。

111,120

社区成员

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

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

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