在我的项目中,我创建了 System.Timers.Timer
对象,并且间隔设置为 10 分钟。每 10 分钟,我就会收到经过的事件。在这个事件处理程序中,我正在执行一些代码。
在执行此代码之前,我将Enabled
属性设置为等于,false
因为如果处理程序的执行时间比下一个时间间隔长,则另一个线程执行 elapsed 事件。
这里的问题是事件突然Elapsed
停止。
我已经阅读了一些文章并怀疑将启用属性设置为 false 垃圾收集器的时刻会释放计时器对象。
如果正确,请告诉我解决方案。
下面是示例代码:
public class Timer1
{
private static System.Timers.Timer aTimer;
public static void Main()
{
// Create a timer with a ten second interval.
aTimer = new System.Timers.Timer(10000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 10min.
aTimer.Interval = 600000;
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program.");
Console.ReadLine();
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
aTimer.Enabled = false;
// excutes some code
aTimer.Enabled = true;
}
}