当前位置: 程晨旭的博客 > 学习笔记>正文

Winform异步更新UI界面的方法一:伪多线程 Timer控件

1 Timer是最简单的实现"类似多线程"的方法

2 Timer只适合执行简单快速的操作

3 Timer是伪多线程,需要定期从主线程(UI线程)中索要执行时间

4 Timer执行时间过长会发生UI卡顿

5 Timer如果每次的执行时间都超过时钟周期,那么会发生周期混乱.


演示代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace ChengChenXu.com.ThreadDemo
{
    public partial class TimerControl : Form
    {
        public TimerControl()
        {
            InitializeComponent();
        }

        private void TimerControl_Load(object sender, EventArgs e)
        {
            //启动Timer1定时器 持续更新时间
            timer1.Start();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            //Timer1 周期100毫秒 显示时间 
            //比如本操作需要1毫秒来执行 那么剩余99毫秒将会空闲留给UI 所以UI不会卡死
            this.label2.Text = DateTime.Now.ToString("HH-mm-ss-FF");
        }

       

        private void button1_Click(object sender, EventArgs e)
        {
            //启动Timer2定时器 周期100毫秒
            timer2.Start();
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            //本操作需要大概需要500毫秒来执行,但是周期只有100毫秒
            //那么将发生线程阻塞,实际表现就是UI会间歇性的卡顿
            //并且周期混乱
            Thread.Sleep(500); //停顿500毫秒

            label4.Text = DateTime.Now.ToString("HH-mm-ss-FF");
        }
    }
}


本文为博主原创,转载请保留出处:
http://www.chengchenxu.com/Article/28/Timer

‹‹ 上一篇 下一篇 ››

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。