c# - 如何创建一个高效的循环来在 Windows 服务中每 X 分钟执行一次操作?

标签 c# windows-services loops performance

我正在编写一个应该每隔 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/

相关文章:

javascript - SignalR 回调不会在 JQuery UI 小部件中触发

c# - 使用正则表达式 (.NET) 查找 unicode 数字

windows-services - 使用 MSDeploy 从包安装 Windows 服务

wcf - 想要将 WCF Web 服务作为 Windows 服务托管,而不是在 IIS 中托管

JavaScript 增量游戏间隔循环

c# - 什么是C#中最有效的循环

c# - 封装一个任务来记录异步函数的持续时间

C# 如何将 OrderBy 与嵌套类的属性一起使用?

c# - 如何使用 Win32 API 在与 LocalSystem 帐户不同的帐户下安装服务?

algorithm - 在循环中声明的变量是否使空间复杂度为 O(N)?