如何正确实现定时Windows Service?需启动即执行且每8小时循环运行
解决Windows Service启动后立即执行任务的问题
你的问题核心是Timer默认要等完整个间隔才会首次触发,只需在OnStart方法中手动调用一次任务执行方法,再启动Timer即可实现"立即执行+后续间隔循环"的效果。
修改后的代码如下:
protected override void OnStart(string[] args) { WriteToFile("Service is started at " + DateTime.Now); timer.Elapsed += new ElapsedEventHandler(OnElapsedTime); timer.Interval = 28800000; // 8小时,单位毫秒 // 服务启动后立即执行一次任务 OnElapsedTime(null, null); timer.Enabled = true; }
说明
- 直接调用
OnElapsedTime(null, null):因为ElapsedEventHandler的参数在本次手动调用中不需要使用,传null即可正常触发任务逻辑 - Timer启用后,会按照设定的8小时间隔自动重复执行任务,无需额外修改
内容的提问来源于stack exchange,提问作者Earlingh
相关产品推荐
相关产品推荐

