システムの「自己チェック」アプリケーションの一部として、60秒ごとにDLL内の静的メソッドを呼び出すアプリケーションがあります。手動でメソッドを実行すると、すべてが10秒以内に完了します。私の問題は、timer.elapsedイベントが2回発射されていることです。これを追加するには、タイマーが経過するたびに、イベントがもう一度発生します。私はtimer.AutoReset = falseを設定しようとしましたが、経過したイベントの開始時にtimer.Enabled = falseを設定してtrueに設定しています(たとえば、2回目の起動、3回目の3回、3回目の4回など)イベントの最後に私はイベントの間隔をリセットしようとしました。私が見つけたすべての投稿は、上記のアクションがこの問題を解決したはずであることを示しています。誰かが私が行方不明を見つけるのを助けることができますか?C#Timer.Elapsedイベントを2回連続して実行する
static Timer cycle = new Timer();
static int cycCount = 0;
static void Main(string[] args)
{
Console.WriteLine("Firebird Survivor Auto Cycle Started.");
Console.CancelKeyPress += Console_CancelKeyPress;
cycle.Interval = 60000; //set interval for service checks.
cycle.Elapsed += new ElapsedEventHandler(CycleComplete_Elapsed);
cycle.AutoReset = false;
cycle.Enabled = true;
cycle.Elapsed += CycleComplete_Elapsed;
while (1 == 1) //stop main method from completing indefinitely
{
//WAIT FOR TIMER TO ELAPSE
}
}
private static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
cycle = null;
}
static void CycleComplete_Elapsed(object sender, ElapsedEventArgs e) //method triggered by timer
{
cycle.Enabled = false;
cycCount++;
WormholeServiceControls.CheckWormHoleStatus();
TimeControls.CheckTimePl(); //call time check
PegasusServiceControls.CheckPegasusStatus(null);
Console.Clear();
Console.WriteLine("--------------------------");
Console.WriteLine(String.Format("| Successful Cycles: {0} |", cycCount));
Console.WriteLine("--------------------------");
cycle.Enabled = true;
}
イベントを2回追加しています。 – LarsTech
ありがとう@LarsTech。私はこれを永久に見つめ、それを見たことはありません。 – daemonx1