C#

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

原文地址:https://www.cnblogs.com/MuZiJin/p/11805133.html