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

10-14 18:44