0

システムの「セルフチェック」アプリケーションの一部として、60 秒ごとに DLL の静的メソッドを呼び出すアプリケーションがあります。メソッドを手動で実行すると、すべて 10 秒以内に完了します。私の問題は、timer.elapsed イベントが 2 回、次々と発生していることです。それに加えて、タイマーが経過するたびに、イベントがもう一度発生します。(たとえば、最初は2回、2回目は3回、3回目は4回など)経過イベントの開始時にtimer.AutoReset = falseを設定し、timer.Enabled = falseを設定してからtrueに設定しようとしましたイベントの終わりに。イベントの間隔をリセットしてみました。私が見つけたすべての投稿は、上記のアクションでこの問題が解決されたはずであることを示しています。足りないものを見つけるのを手伝ってくれる人はいますか?

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;
}
4

1 に答える 1