System.Threading.Timer を使用する Windows サービスを開発しました。タイマーは x 分ごとに開始され、正常に動作します (タイマーはメソッドの最後で更新されます)。しかし、私がタイマーを更新し、いつ再開するかを彼に伝えているという事実にもかかわらず、ブロックサービスの試行にエラーが発生した場合、なぜそれが起こっているのですか? コードは次のとおりです。
System.Threading.Timer serviceTimer;
protected override void OnStart(string[] args)
{
TimeSpan diff;
diff = nextRun - now;
TimerCallback timerDelegate =
new TimerCallback(MyTimerCallback);
serviceTimer = new System.Threading.Timer(timerDelegate, null,
diff, new TimeSpan(-1));
}
public void MyTimerCallback(object something)
{
try
{
//possible error that happened
}
catch(Exception)
{
}
finally
{
//diff is a new variable telling timer when to start again
serviceTimer.Change(diff, new TimeSpan(-1));
}
}
エラーが発生した場合にサービスが停止するのはなぜですか?