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