[我正在开发Windows服务,在OnStart()
方法中,我使用Timer
在特定时间间隔后按下timer1_Tick
,但是timer1_Tick
甚至没有调用一次。
这是我的代码
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
}
寡妇服务Program.cs
文件的起始代码
static class Program
{
static void Main()
{
Service1 myService = new Service1();
//myService.OnDebug();
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
您需要在Start()
上调用timer1
才能启动System.Timers.Timer
。
您的计时器可能被垃圾回收所收集,因为您没有对其进行引用。
您应该将其存储在字段中:
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..");
}