c#實現每隔規定時間自動執行程序代碼 c#定時器

 在一般的項目中我們很少用到c#實現每隔規定時間自動執行程序代碼,但是如果你經歷的項目多,或者應用程序做的比較多的話,c#實現每隔規定時間自動執行程序代碼就用的比較多。像玩網遊做掛機定時發佈廣告這樣的項目中就用到了c#實現每隔規定時間自動執行程序代碼。
 
25億企業網站管理系統在多年運營seo方面,就用到了自動執行代碼,現在給大家講解一下c#實現每隔規定時間自動執行程序代碼。
 
在實踐應用中我們可以用三種方法來實現。

 

方法一:調用Thread線程執行方法,在執行方法中實現死循環,在每個循環Sleep裏設定時間 

Thread thread25yi = new Thread(new ThreadStart(obj.MethodTimer1)); 
thread25yi.Start(); 
void MethodTimer1() 
{ 
while (true) 
{ 
Console.WriteLine(DateTime.Now.ToString() + "_" + thread25yi.CurrentThread.ManagedThreadId.ToString()); 
thread25yi.CurrentThread.Join(100);//阻止設定時間 
} 
} 

方法二:使用System.Timers.Timer類 

System.Timers.Timer t25yi = new System.Timers.Timer(100);//實例化Timer類,設置時間間隔爲100毫秒
t25yi.Elapsed += new System.Timers.ElapsedEventHandler(obj.MethodTimer2);//當到達時間的時候執行MethodTimer2事件 
t25yi.AutoReset = true;//false是執行一次,true是一直執行
t25yi.Enabled = true;//設置是否執行System.Timers.Timer.Elapsed事件 
while (true) 
{ 
Console.WriteLine("test_" + Thread.CurrentThread.ManagedThreadId.ToString()); 
Thread.Sleep(100); 
} 
void MethodTimer2(object source, System.Timers.ElapsedEventArgs e) 
{ 
Console.WriteLine(DateTime.Now.ToString() + "_" + Thread.CurrentThread.ManagedThreadId.ToString()); 
}

 

方法三:使用System.Threading.Timer 

System.Threading.Timer threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(obj.MethodTimer3), null, 0, 100); 
while (true) 
{ 
Console.WriteLine("test_" + Thread.CurrentThread.ManagedThreadId.ToString()); 
Thread.Sleep(100); 
}  
void MethodTimer3(Object state) 
{ 
Console.WriteLine(DateTime.Now.ToString() + "_" + Thread.CurrentThread.ManagedThreadId.ToString()); 
} 

Timer構造函數參數說明: 
Callback是一個 TimerCallback 委託,表示要執行的方法。 
State是一個包含回調方法要使用的信息的對象,或者爲空引用(Visual Basic 中爲 Nothing)。 
dueTime是調用 callback 之前延遲的時間量(以毫秒爲單位),指定 Timeout.Infinite 以防止計時器開始計時。指定零 (0) 以立即啓動計時器。 
Period是調用 callback 的時間間隔(以毫秒爲單位),指定 Timeout.Infinite 可以禁用定期終止。
 
上述方法中用timer有一個弊端,就是當timer間隔時間內,事件沒執行完,timer就會新建一個線程,從頭開始執行這個事件,而上一個線程繼續執行,這樣就會出現,系統中線程n多,說不定一會兒系統的資源就耗盡了。

 

轉自:笨小孩做開發 https://www.cnblogs.com/dullbaby/p/4902346.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章