У меня есть приложение, которое вызывает статические методы в DLL каждые 60 секунд как часть системного приложения «самопроверки». Когда я вручную запускаю методы, все они заканчиваются менее чем за 10 секунд. Моя проблема заключается в том, что событие timer.elapsed запускается дважды, один за другим. Чтобы добавить к этому, каждый раз, когда таймер истекает, событие срабатывает еще раз. (например, первый раз это 2 firings, второй - 3, третий - 4 и т. д.) Я попытался установить timer.AutoReset = false вместе с установкой timer.Enabled = false в начале прошедшего события, а затем установить его в true в конце мероприятия. Я попытался сбросить интервал в событии. Каждое обнаруженное мной сообщение указывает, что вышеупомянутые действия должны были решить эту проблему. Может ли кто-нибудь помочь мне найти то, что мне не хватает?C# Timer.Elapsed Событие срабатывает дважды подряд
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;
}
Вы добавляете событие дважды. – LarsTech
Спасибо @LarsTech. Я смотрел на это вечно и никогда не видел этого. – daemonx1