创建和部署系统计时器的正确方法是什么?

时间:2014-01-04 04:47:00

标签: c# winforms

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

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
    }

}

1 个答案:

答案 0 :(得分:0)

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

  

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

Dispose(WaitHandle)应该像:

一样使用
ManualResetEvent resetEvent = new ManualResetEvent(false);
Timer.Dispose(resetEvent);
resetEvent.WaitOne();