System.Timers.Timer调用入门问题

阿鹏兄 2006-12-25 04:49:33
我的代码:
timer1.Elapsed +=
new System.Timers.ElapsedEventHandler(myTimer_Elapsed);

在myTimer_Elapsed()中的代码出现异常后,为什么就不能再触发myTimer_Elapsed()事件?有什么好的办法?
...全文
259 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujia_0421 2006-12-26
  • 打赏
  • 举报
回复
就是防止过早地对Timer进行垃圾回收..

没它这个程序一样可以执行..
阿鹏兄 2006-12-26
  • 打赏
  • 举报
回复
老大: GC.KeepAlive(aTimer);
是什么意思?
liujia_0421 2006-12-25
  • 打赏
  • 举报
回复
我做了个测试:
static void Main(string[] args)
{
System.Timers.Timer aTimer = new System.Timers.Timer();

aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

aTimer.Interval = 2000;
aTimer.Enabled = true;

Console.WriteLine("Press the Enter key to exit the program.");
Console.ReadLine();

GC.KeepAlive(aTimer);
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
try
{
throw new Exception("exception");
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}

虽然抛出了异常,但只要捕获了,还是可以继续执行的..
并没有出现我上面所说的Timer可能自动关闭的情况..
liujia_0421 2006-12-25
  • 打赏
  • 举报
回复
奇怪,应该说不会出现你这样的情况的啊..

能不能把相关代码贴出来看下..
liujia_0421 2006-12-25
  • 打赏
  • 举报
回复
是不是因为Timer在出现异常的时候就自动关闭了..

试着重新启动一下看看..
阿鹏兄 2006-12-25
  • 打赏
  • 举报
回复
myTimer.Enabled 和 myTimer.start()调用
都是没有问题的,因为myTimer_Elapsed()已经被触发过一次,但是异常后就不能再次触发
owennol 2006-12-25
  • 打赏
  • 举报
回复
myTimer.Enabled = true;
myTimer.start()调用
cangwu_lee 2006-12-25
  • 打赏
  • 举报
回复
看看 myTimer.Enabled 的值是什么

--------------------------------------------------------------
程序,犹如人生。
阿鹏兄 2006-12-25
  • 打赏
  • 举报
回复
myTimer_Elapsed中本来就有try catch,但catch了以后不能再触发该事件了 。
灰太狼 2006-12-25
  • 打赏
  • 举报
回复
在myTimer_Elapsed中加入try catch 。

110,549

社区成员

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

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

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