我正在开发一个需要在不同时期执行多项任务的 Windows 服务。
我目前有两个计时器,一个完整计时器和一个按如下定义的不同时间间隔运行的备用计时器。
fullTimer = new System.Timers.Timer();
fullTimer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
fullTimer.Interval = Convert.ToDouble(interval * 1000);
fullTimer.AutoReset = true;
fullTimer.Start(); // or fullTimer.Enabled = true;
GC.KeepAlive(fullTimer);
stockTimer = new System.Timers.Timer();
stockTimer.Elapsed += new ElapsedEventHandler(StockOnElapsedTime);
stockTimer.Interval = Convert.ToDouble(stockInterval * 1000);
stockTimer.AutoReset = true;
stockTimer.Start();
GC.KeepAlive(stockTimer);
谁能看出为什么计时器不启动。我的行为真的很奇怪。如果我手动解雇库存处理程序
StockOnElapsedTime(null,null);
计时器似乎继续正确触发。
最佳答案
来自 GC.KeepAlive 上的文档,我会说你可能想检查它是否在做你认为它在做的事情。垃圾收集器将只保证在方法开始到调用 KeepAlive 之间保持对象存活。你能让一个对象的这些成员保持不变吗?
关于C# Windows 服务 - 多个计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3277647/