我正在创建一个 WindowsService,它的 Timer 绑定(bind)到具有无限循环的 EventHandler;我希望能够在服务的 OnStart() 方法中触发此计时器一次,然后在服务的 OnStop() 中停止计时器。如何强制定时器只触发一次?
此外,这是在 WindowsService 中控制无限循环的最佳设计吗?在另一个线程(可能是后台线程)中处理它会更好吗?
最佳答案
Would handling it inside another thread (perhaps background thread) be better?
是的。这听起来你最好使用单个后台线程而不是计时器。线程可以进入你的循环状态,直到你发出退出的信号(在
OnStop
方法中)。新Cancellation support in .NET 4提供了一种相当干净的方式来“取消”你的无限循环......
关于multithreading - 如何只触发一次 System.Timers.Timer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8249313/