1. System.Windows.Forms.Timer (在Window Form中使用的定時器)安全
當一個System.Windows.Forms.Timer類被構造時,當前定時器會和當前線程進行關聯。而當計時器的計滿後,一個定時器消息將被插入到當前線程的消息隊列中。當前線程逐一處理消息中的全部消息,並一一派發給各自的處理方法。這樣的機制和利用工做者進程定時有很大的區別,System.Windows.Forms.Timer類型並無涉及多線程的操做,定時器的設置、定時方法的執行都在同一個線程之上。這就意味着System.Windows.Forms.Timer並不能準確計時,尤爲當消息阻塞時,定時器的偏差將會更大,由於定時器消息只能等待在前面的全部消息處理完後才能獲得處理。可是由於System.Windows.Forms.Timer類型的定時器並不涉及多線程的操做,所以是線程安全的,不會發生回調方法重入的問題。多線程
namespace test { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //實例化一個timer System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer(); private void StartTimeBtn_Click(object sender, EventArgs e) { //給timer掛起事件 myTimer.Tick += new EventHandler(Callback); //使timer可用 myTimer.Enabled = true; //設置時間間隔,以毫秒爲單位 myTimer.Interval = 1000;//1s } private void StopTimeBtn_Click(object sender, EventArgs e) { myTimer.Stop(); } //回調函數 private void Callback(object sender, EventArgs e) { //獲取系統時間 textBox1.Text = DateTime.Now.ToLongTimeString().ToString(); } } }
————————————————
版權聲明:本文爲CSDN博主「細水長流-青山」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/tianjing0805/article/details/75221067函數