Что я хочу, служба Windows, которая выполняет функцию с интервалом, без открытия нескольких потоков.
Что я сделал, используя Threading.Timer Я создал следующий код:
protected override void OnStart(string[] args) {
System.Threading.Timer timer1 = new System.Threading.Timer(new TimerCallback(Risk), null, 60000, Timeout.Infinite);
}
public void Risk(object state) {
try{
//long operation
}
catch(ex){
}
finally{
timer1.Change(1000, Timeout.Infinite);
}
}
Моя проблема, похоже, этот код открывает несколько потоков.Это возможно?Где я неправ?Это хороший способ получить то, что я хочу?
ОБНОВЛЕНИЕ (с использованием System.Timers.Timer):
protected override void OnStart(string[] args) {
System.Timers.Timer aTimer;
aTimer = new System.Timers.Timer(60000);
aTimer.Elapsed += Risk;
aTimer.AutoReset = true;
aTimer.Enabled = true;
}
private void Risk(Object source, ElapsedEventArgs e) {
aTimer.Enabled = false;
try{}
catch(ex){}
finally{
aTimer.Interval = 1000;
aTimer.Enabled = true;
}
}