我有一个应用程序每60秒调用一次DLL中的静态方法,作为系统“自检”应用程序的一部分。当我手动运行这些方法时,它们都在不到10秒的时间内完成。我的问题是timer.elapsed事件发生两次,一个接一个地发生。为了补充说明,每次计时器过去时,事件再次触发一次。 (例如,第一次是2次,第二次是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