c# - 如何配置定时器

标签 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 对象/停止它?我不希望计时器突然开始计时并对我的应用程序造成严重破坏。

最佳答案

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

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

关于c# - 如何配置定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3887610/

相关文章:

c# GetElementsByTagName 然后如何读取内部标签值

c# - 将静态类型对象扩展为动态对象

c# - 从网站下载音频文件

c# - 将新实体插入到具有标识主键的上下文中

c# - 尝试在 C# 中将转换运算符实现为可空类型时出错

c# - 如何向工厂模式添加新的派生类型?

c# - for循环的优化

c# - Windows Phone 7 中的网格

c# - 当有复合主键并且只想使用一个时使用 db.Find

c# - 使用 LINQ 将整数范围转换为字符串列表