我正在开发一个需要在不同时期执行多项任务的 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/