繁体   English   中英

Windows Service Tick ElapsedEventArgs从未被调用

[英]Windows Service Tick ElapsedEventArgs is never called

我试图部署一项在生产服务器本地运行良好的服务。 但是在此服务器上,ElapsedEventHandler似乎从未调用我的方法Tick()

我已经阅读了与“其他Windows服务”类似的其他线程-计时器似乎未打勾Windows服务 中未调用计时器打勾事件,但我对我的问题没有任何答案:/

我还尝试使用_timer.Enabled = 1而不是_timer.Start(正常情况下未发生任何事件,但仍尝试过),并且还尝试了几次重新安装服务。

我使用System.Timers类中的Timer。 这是我的代码:

static void Main()
{
    var servicesToRun = new ServiceBase[] 
    { 
        new SynchronizeEvents() 
    };
    #if DEBUG
    servicesToRun.LoadServices();
    #else
    ServiceBase.Run(servicesToRun);
    #endif
}

public partial class SynchronizeEvents : ServiceBase
{
    private readonly Logger _logger = LogManager.GetCurrentClassLogger();//Nlog
    private Timer _timer;//From Class System.Timers

    private readonly DbSetName _db = new DbSetName ();

    private static readonly Dictionary<Employee, otherStuff> Subscriptions = new Dictionary<Employee, otherStuff>();
    public SynchronizeEvents()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        _logger.Trace("Service Start");
        _timer = new Timer(5000) { AutoReset = false };//Same problem without AutoReset = false
        _timer.Elapsed += Tick;
        _timer.Start();
        _logger.Trace("End OnStart");
    }

    protected override void OnShutdown()
    {
        _logger.Trace("OnShutdown");
        _timer.Stop();
        base.OnShutdown();
    }

    protected void Tick(object sender, ElapsedEventArgs elapsedEventArgs)
    {
        _logger.Trace("Tick");
        _timer.Stop();
        Compute();
        _timer.Start();
    }
    protected override void OnStop()
    {
        _logger.Trace("OnStop");
    }

在DebugMode上以及在发布模式下的本地计算机上,一切工作都很好,但是当我在生产服务器上安装它时,我得到的唯一日志是:

2014-09-08 16:35:57.1929 TRACE服务开始

2014-09-08 16:35:57.2085 TRACE结束OnStart

当我停止服务时我也得到了这个...

2014-09-08 16:40:52.4072 TRACE End OnStop

实际上,我必须向史蒂夫·韦伦斯(Steve Wellens)道歉,他是正确的询问Compute的工作。 问题与Compute()有关。 它具有一些需要缺少DLL的代码。 我不知道为什么_logger.Trace(“ Tick”); 没有被调用并且没有触发异常:/我不得不逐行注释我的程序行,以找出问题的根源...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM