导致定时器失效_解决windows 服务中定时器timer 定时偶尔失效 问题

在开发Windows服务时遇到定时器不定时失效的问题,表现为每隔几个小时无法记录log。经过排查,发现是由于电脑进入睡眠或休眠状态导致定时器失效。解决方案是将电脑设置为从不休眠或睡眠,以保持定时器正常工作。同时介绍了待机、休眠和睡眠的区别。
摘要由CSDN通过智能技术生成

最近做个windows 服务,功能是:定时执行一个任务:自动登录到一个网站后,点击相关网面上的按钮button。

在处理的过程中发现定时器老是不定时的失效,失效时间没有规律。

由于刚开始处于测试阶段,所以只简单的log一下到时间间隔后是否执行了定时器定时Elapsed事件;结果出错了,每大约相隔几个小时就没有log记录了,是怎么回事呢?

为什么运行一段时间后(一般几个小时到十几个小时)定时器就不工作了,过了一段时间后又会自动工作了。

也就是说   log.Info("Do something on time:"+DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); 这段代码有时候没有把当前时间写到log文件里,过段时间又能自动写入了。

测试程序比较简单,如下:

public partial class MyService : ServiceBase

{

#region private methods and fields;

log4net.ILog log = log4net.LogManager.GetLogger("logger");

System.Timers.Timer timer = new System.Timers.Timer(1000);

protected void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

{

timer.Enabled = false;

log.Info("Do something

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值