簡體   English   中英

創建和處置系統計時器的正確方法是什么?

[英]What is the proper way to create and dispose a system timer?

創建和配置系統計時器的正確方法是什么,我的代碼如下

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM