如何使用计时器

时间:2016-03-19 17:25:45

标签: .net windows-services

我继承了一个服务,并注意到每当我尝试通过服务停止服务时,它会出错并最终关闭,但看起来很脏。最重要的是,OnStop()事件中的日志记录甚至都没有触发。

当我查看代码时,主服务线程正在通过2个定时器执行定期任务。我认为这是问题的原因,当请求停止时,线程必须在计时器任务的中间,所以它打嗝。

下面是伪代码,处理这个问题的正确方法是什么,所以当我停止服务时它会正常退出?

protected override void OnStart(string[] args)
{
     _timer1 = new Timer(OneSecond * 3) {AutoReset = true};
    _timer1.Elapsed += TaskOneCode;

    _timer2 = new Timer(OneSecond * 3) {AutoReset = true};
    _timer2.Elapsed += TaskTwoCode;
}

protected override void OnStop
{
    log("Stopping...");     <---  This line does not even fire.
}

0 个答案:

没有答案