1.System.Timers命名空間下的Timer類。System.Timers.Timer類:定義一個System.Timers.Timer對象,然后綁定Elapsed事件,通過Start()方法來啟動計時,通過Stop()方法或者Enable=false停止計時。AutoReset屬性設置是否重復計時(設置為false只執行一次,設置為true可以多次執行)。Elapsed事件綁定相當於另開了一個線程,也就是說在Elapsed綁定的事件里不能訪問其它線程里的控件(需要定義委托,通過Invoke調用委托訪問其它線程里面的控件)。
System.Timers.Timer MTM_Timer;
//定義作業執行時間
private readonly double MTM_Interval = Convert.ToDouble(ConfigurationManager.AppSettings["MTMShareCountryMain"]);
private static int RunFlag = 0;
//定義固定時間執行
private readonly int EXECMTMShareCountry = Convert.ToInt32(ConfigurationManager.AppSettings["EXECMTMShareCountry"]);
public void MTMShareCountryMain()
{
RunFlag = 0;
if (MTM_Timer == null)
{
RunFlag = 0;
MTM_Timer = new System.Timers.Timer();
//周期時間
MTM_Timer.Interval = MTM_Interval;
//到達時間的時候執行事件
MTM_Timer.Elapsed += new System.Timers.ElapsedEventHandler(MTMShareCountry);
//是否執行Elapsed事件
MTM_Timer.Enabled = true;
//設置是執行一次(false)還是一直執行(true)
MTM_Timer.AutoReset = true;
//啟動作業
MTM_Timer.Start();
}
}
private void MTMShareCountry(object sender, System.Timers.ElapsedEventArgs e)
{
if (DateTime.Now.Hour == EXECMTMShareCountry)//判斷當前時間與定義時間是否一致
{
if (RunFlag == 1)
return;
RunFlag = 1;
try
{
InitializeShareCountry();//調用后台方法
}
catch (Exception ex)
{
}
finally
{
RunFlag = 0;
}
}
}
