如何配置计时器

时间:2010-10-08 04:05:53

标签: c#

我有以下使用System.Timers.Timer:

的代码
// an instance variable Timer inside a method
Timer aTimer = new Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
aTimer.Interval = 300000;
aTimer.AutoReset = false;
aTimer.Enabled = true;
while (aTimer.Enabled)
{
    if (count == expectedCount)
    {
        aTimer.Enabled = false;
        break;
    }
}

我有以下代码来处理事件:

private static void OnElapsedTime(Object source, ElapsedEventArgs e)
{
    // do something
}

问题是:如果定时器事件被触发并进入OnElapsedTime,那么Timer对象是否会停止并被正确地垃圾收集?如果没有,我该怎么做才能正确处理Timer对象/停止它?我不希望计时器突然蠕动并在我的应用程序中造成破坏。

2 个答案:

答案 0 :(得分:9)

调用Timer.Dispose: http://msdn.microsoft.com/en-us/library/zb0225y6.aspx

private static void OnElapsedTime(Object source, ElapsedEventArgs e)
{
    ((Timer)source).Dispose();
}

答案 1 :(得分:4)

您无需使用while循环,AutoReset = false已确保Timer仅触发一次。

相关问题