System.Timers.Timer
.NET アプリケーションでの の使用について質問があります。
3 つの異なるイベントがあり、1 つは毎秒トリガー、もう 1 つは毎分トリガー、最後のイベントは 30 分ごとにトリガーします。
タイマーを 1 つ使用するか、3 つ使用するかは、パフォーマンスの面で優れていますか?
1 つのタイマーでそれを行う方法は、ElapsedEventArgs
SignalTime をチェックし、以前に測定した時間と比較することです。もちろん、DateTime を変更した場合、これはまったく機能しませんが、ここでは問題ではありません。基本的に毎秒経過するごとに、1分または30分経過したかどうかも確認します...
私の懸念は、3 つのタイマーを使用するとオーバーヘッドが大きくなりすぎることです。私は間違っていますか?シンプルさと明確さのために3を使用する必要がありますか、それとも1つのタイマーで十分ですか?
コード:
private void TimerEverySecondElapsed(object sender, ElapsedEventArgs e)
{
timerEverySecond.Enabled = false;
OnTimerElapsed(TimerType.EverySecond);
// Raise an event every minute
if ((e.SignalTime - previousMinute) >= minuteSpan)
{
OnTimerElapsed(TimerType.EveryMinute);
previousMinute = e.SignalTime;
}
// Raise an event every half hour
if ((e.SignalTime - previousHalfhour) >= semiHourSpan)
{
OnTimerElapsed(TimerType.EverySemiHour);
previousHalfhour = e.SignalTime;
}
timerEverySecond.Enabled = true;
}
minuteSpan
読み取り専用のsemiHourSpan
TimeSpan です。