C# Windows 服务 - 多个计时器

标签 c# .net windows windows-services timer

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

相关文章:

c# - 调整 Web 浏览器大小时调试 session 在 visual studio 中意外结束

C#:Math Round() 对于不同的小数会产生不同的值

c# - 如何用颜色填充图像的一部分?

windows - 如何使用命令提示符 (cmd) 在 Windows 中列出文件。我试过在 Linux 中使用 ' ls ' 但它显示错误?

ios - RBG24 在 Windows 上可以很好地播放,但在 iOS 上却不行

c# - DataGridView 中的文本框列

c# - Serilog 实现打破了其他配置

javascript - 使用数据进行 AJAX 后调用

c# - 如何在 .net 标准项目中通过 nuget 获取 stylecop 规则集

c# - 在 C# 中创建一个文件并将其作为 IntPtr 传递给 COM 对象