C# 计时器已用事件未命中目标方法

C# 计时器已用事件未命中目标方法,c#,.net,timer,windows-services,C#,.net,Timer,Windows Services,我正在开发Windows服务,在OnStart方法中,我使用Timer在某个时间间隔后点击timer1_滴答,但timer1_滴答甚至一次都没有调用 这是我的密码 protected override void OnStart(string[] args) { base.OnStart(args); var timer1 = new System.Timers.Timer(); timer1.Interval = 30000; //every 30 secs ti

我正在开发Windows服务,在OnStart方法中,我使用Timer在某个时间间隔后点击timer1_滴答,但timer1_滴答甚至一次都没有调用

这是我的密码

protected override void OnStart(string[] args)
{
    base.OnStart(args);
    var timer1 = new System.Timers.Timer();
    timer1.Interval = 30000; //every 30 secs
    timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
    timer1.Enabled = true;
    WriteToFile("Service has started..");
}

private void timer1_Tick(object sender, ElapsedEventArgs e)
{
    WriteToFile("Entered in GetFailedProductDetails...");
    //code  
}
widows服务程序.cs文件的启动代码


您的计时器可能由垃圾收集收集,因为您没有保留对它的引用

应将其存储在以下字段中:

private System.Timers.Timer timer1;

protected override void OnStart(string[] args)
{
    base.OnStart(args);
    timer1 = new System.Timers.Timer();
    timer1.Interval = 30000; //every 30 secs
    timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
    timer1.Enabled = true;
    WriteToFile("Service has started..");
}
private System.Timers.Timer timer1;

protected override void OnStart(string[] args)
{
    base.OnStart(args);
    timer1 = new System.Timers.Timer();
    timer1.Interval = 30000; //every 30 secs
    timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
    timer1.Enabled = true;
    WriteToFile("Service has started..");
}