我正在编写一个应该每隔 60 秒执行一次操作的 Windows 服务。
如何实现该主循环的最佳方式是什么?
到目前为止我看到的实现:
1) 使用每 xx 秒执行一次委托(delegate)的 Timer 对象
2) 使用 ManualResetEvents(我看到的实现只执行一次,但据我所知,可以使用此类 resetevents 创建循环)
windows服务会一直运行,所以最好创建一个没有内存泄漏的服务。
实现该主循环的最佳方式是什么?
评论后编辑: 每 X 秒将执行的操作将启动多个(假设最多 10 个)线程。每个线程运行不超过30秒
最佳答案
使用定时器。这将使程序的意图最明确。从您的 OnStart 和 OnStop 方法启动和停止计时器很容易,并且回调将在线程池上触发,因此您不会占用线程。 Timer 对象本身不会泄漏内存。 (您仍然可以编写一个泄漏内存的错误,但这对于主循环的任何实现都同样容易。)
关于c# - 如何创建一个高效的循环来在 Windows 服务中每 X 分钟执行一次操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330090/