And*_*ndy 11 c# windows-services timer
我正在使用a System.Timers.Timer,我OnStart在ac #windows服务的方法中有如下代码.
timer = new Timer();
timer.Elapsed += timer_Elapsed;
timer.Enabled = true;
timer.Interval = 3600000;
timer.Start();
Run Code Online (Sandbox Code Playgroud)
这导致代码输入timer_Elapsed从我启动服务后的一小时开始每小时执行一次.有没有办法让它在我启动服务时执行,然后每小时执行一次?
调用的方法timer_Elapsed运行时间太长,无法直接调用它OnStart.
Han*_*ant 20
只需启动一个线程池线程来调用worker函数,就像Timer一样.像这样:
timer.Elapsed += timer_Elapsed;
ThreadPool.QueueUserWorkItem((_) => DoWork());
...
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
DoWork();
}
void DoWork() {
// etc...
}
Run Code Online (Sandbox Code Playgroud)