把CallBackRunTime 保存到application中去,保持对CallBackRunTime 的引用,这样就不会停了!
我也过,莫名其妙 Timer停掉了,搞不清楚怎么回事
public void CheckStatus(Object stateInfo)
不是静态的 程序运行的 很好 ! 我用 很简单的方法,都不用复杂的东西。
你的statusChecker.CheckStatus为静态方法吧?
TimerCallback timerDelegate =
new TimerCallback(statusChecker.CheckStatus);
Console.WriteLine("服务器开始扫描:"+
DateTime.Now.ToString("h:mm:ss.fff"));
Timer stateTimer =
new Timer(timerDelegate, autoEvent, 0,500);
autoEvent.WaitOne(-1, false);
stateTimer.Dispose();
Console.WriteLine("xxxxxxxx.");
我这样做的 一直没有停啊
你的怎么 停下的?
我不知道你间隔最小设了什么值
mRealDataCollection =mRealData.GetAllRealData();
肯定有问题。
我觉得可以从2个方面入手,1是看看你怀疑的部分在.net中的实现,毕竟debug和Release是不同的,特别是抛出异常。2是多线程的机制,在这里可以考虑一下时间对线程的影响,或者说时间对资源的影响、
加上异常处理,而且mRealDataCollection 完全可以做成局部变量而不进行那么大的lock啊
是你Process函数内发生异常导致定时器线程当机的可能性大些。
在Process中加try{..}catch...试试
我用VS2003 开发的 System.Threading.TimerCallback 每500毫秒 扫描数据库都可以啊 我扫描了2天2夜 都没有问题啊