Winform 线程 委托 更新 WinForm界面

        public void UpdateControlValue(Control c, string content)
        {
            if (c.InvokeRequired)
                c.Invoke((EventHandler) delegate { c.Text = content; });
            else
                c.Text = content;
        }


using System;
using System.Threading;
using System.Windows.Forms;

namespace InterfaceRefresh
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private bool refresh = true;
        private void button1_Click(object sender, EventArgs e)
        {
            int num = 0;
            
            //new Thread(delegate() //开线程刷新 .net 2.0写法
            new Thread( ()=> //开线程刷新 .net 3.5以上写法
            {
                if (refresh)
                {
                    refresh = !refresh;
                    UpdateButton(button1, "关闭刷新");
                }
                else
                {
                    refresh = !refresh;
                    UpdateButton(button1, "开始刷新");
                }
                
                while (!refresh) //用死循环刷新
                {
                    UpdateTextBox(textBox1, "刷新次数:" + num++);
                }
            }) {IsBackground = true}.Start();
        }


        delegate void RefreshDel();
        private void UpdateTextBox(TextBox sender, string content)
        {
            //new RefreshDel(delegate() //.net 2.0写法
            //{
                this.Invoke(new RefreshDel(delegate()
                {
                    sender.AppendText(content + Environment.NewLine); //TextBox的Text赋值
                }));
            //}).Invoke();
        }

        private void UpdateButton(Button sender, string content)
        {
            //new Action( ()=> //.net 3.5以上写法
            //{
                this.Invoke(new Action( ()=>
                {
                    sender.Text = content; //button的Text赋值
                }));
            //}).Invoke();
        }
    }
}


阅读更多
上一篇C# 丢弃工厂模式,反射方式实现计算器
下一篇C# WindowForm 三句话实现简单计算器
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭