创建和处置系统计时器的正确方法是什么



创建和处置系统计时器的正确方法是什么,我的代码如下

using System.Timers;
public void StartGetFileTimer(int interval)
{
    if (TIMER_GET_FILE != null)
    {
        StopGetFileTimer();
    }
    try
    {
        if (TIMER_GET_FILE == null)
            {
                TIMER_GET_FILE = new Timer();
                TIMER_GET_FILE.Interval = interval * 1000;
                TIMER_GET_FILE.Elapsed += new ElapsedEventHandler(GetLatestFileTimer_tick);
                TIMER_GET_LATEST_FILE.Enabled = true;
                TIMER_GET_FILE.Start();
            }
        else
        {
            //log
        }
    }
    catch (Exception e)
    {
        //log
    }
}
public void StopGetFileTimer()
{
    try
    {
        if (TIMER_GET_LATEST_FILE != null)
        {
            TIMER_GET_LATEST_FILE.Elapsed -= new ElapsedEventHandler(GetLatestFileTimer_tick);
            TIMER_GET_LATEST_FILE.Stop();
            TIMER_GET_LATEST_FILE.Enabled = false;
            TIMER_GET_LATEST_FILE.Dispose();
            TIMER_GET_LATEST_FILE = null;
        }
    }
    catch (Exception ex)
    {
        //log
    }
}

只需使用 Dispose 方法,但如文档所述:

Dispose() 方法重载之后可能会发生回调 调用,因为计时器将回调排队等待线程执行 池线程。您可以使用 Dispose(WaitHandle) 方法重载来 等待所有回调完成。

Dispose(WaitHandle) 应该像这样使用:

ManualResetEvent resetEvent = new ManualResetEvent(false);
Timer.Dispose(resetEvent);
resetEvent.WaitOne();

相关内容

最新更新