• C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题(转载)


    一、定时执行主界面控件值

    1、利用定时器
            Thread t = null;
    
            private void InitTSJK()
            {
                t = new Thread(new ThreadStart(GetData));
                t.IsBackground = true;
                t.Start();
            }
    
            private void GetData()
            {
                while (true)
                {
                    QueryIro();
                    Thread.Sleep(10000);
                }
            }
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace SampleNotice
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Thread t = new Thread(new ThreadStart(GetData));
                t.IsBackground = true;
                t.Start();
            }
    
            private void GetData()
            {
                var timer = new System.Timers.Timer();
                timer.Interval = 1000;
                timer.Enabled = true;
                timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);  
                timer.Start();
                timer.Elapsed += (o, a) =>
                {
                    SetData();
                    ShowMessage(string.Format("更新时间:" + DateTime.Now));
                };
            }
    
            //声明委托
            private delegate void SetDataDelegate();
            private void SetData()
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new SetDataDelegate(SetData));
                }
                else
                {
                    label1.Text = string.Format("更新时间:" + DateTime.Now);
                }
            }
    
            //声明委托
            private delegate void ShowMessageDelegate(string message);
            private void ShowMessage(string message)
            {
                if (this.InvokeRequired)
                {
                    ShowMessageDelegate showMessageDelegate = ShowMessage;
                    this.Invoke(showMessageDelegate, new object[] { message });
                }
                else
                {
                    txtbox.Text = message;
                }
            }
        }
    }
  • 相关阅读:
    CentOS 8配置Java环境
    记录一个免费的开源API接口管理工具
    WebAPI 查询lookup字段的属性
    Windows环境变量配置与读取
    The specified Active Directory user already exists as a Dynamics 365 user
    QueryExpression之GreaterEqual和LessEqual
    Dynamics CRM Plugin Use Config
    【转】Reports SPN/SSPI Problems
    【转】Report Server cannot load the TERADATA / SQLPDW extension
    iOS 自动布局
  • 原文地址:https://www.cnblogs.com/michellexiaoqi/p/12206230.html
Copyright © 2020-2023  润新知