C# Windows服务每日任务调度
为使C# Windows服务每天执行任务,有多种方法可供选择。不建议使用Thread.Sleep()
方法。更好的方法是使用计划任务或在服务中实现计时器。
对于定制解决方案,可以在服务中设置计时器。此计时器应以固定的时间间隔(例如,每10分钟)触发。触发时,代码可以检查自上次运行以来日期是否已更改。如果是,则可以在执行清理任务时停止计时器。任务完成后,可以重新启动计时器。
以下代码片段演示了这种方法:
<code class="language-csharp">private Timer _timer; private DateTime _lastRun = DateTime.Now.AddDays(-1); protected override void OnStart(string[] args) { _timer = new Timer(10 * 60 * 1000); // 每10分钟 _timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); _timer.Start(); //... } private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { // 忽略时间,只比较日期 if (_lastRun.Date < DateTime.Now.Date) { _timer.Stop(); // 执行每日清理任务 _lastRun = DateTime.Now; _timer.Start(); } }</code>
此设置将确保每日午夜可靠地执行清理任务,无需使用Thread.Sleep()
。
以上是如何安排 C# Windows 服务可靠地运行日常任务?的详细内容。更多信息请关注PHP中文网其他相关文章!