multithreading - 如何只触发一次 System.Timers.Timer

标签 multithreading windows-services timer infinite-loop

我正在创建一个 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/

相关文章:

c# - 正确完成服务器线程

java - 并行运行 Selenium 测试时出现 TimeoutException

multithreading - 几天后Tomcat 7卡住

java - 在写入时从 ByteArrayOutputStream 中读取

java - 在作为 Windows 服务运行的 Java 程序中生成键盘输出

c# - 允许配置 Windows 服务

windows-services - 使用 sc.exe 创建服务时如何传入上下文参数?

c# - ASP.NET - 添加新行后刷新 gridview(DataTable 源)(由计时器触发)

javascript - 检测毫秒间隔内的秒数

java - 多线程计时器无法正常工作