zoukankan      html  css  js  c++  java
  • WIN FORM 多线程更新UI(界面控件)

    方法1,更新单个控件:
    public delegate void ControlTextMethod(Control control, string text);
    private void SetControlText(Control control, string text)
    {
        if (this.InvokeRequired)
        {
            ControlTextMethod controlTextMethod = new ControlTextMethod(SetControlText);
            this.Invoke(controlTextMethod, new object[] { control, text });
        }
        else
        {
            control.Text = text;
        }
    }

    需要更新控件的Text的地方,直接调用SetControlText方法就可以了。

    方法2,使用“UIThread”:

    public void UIThread(MethodInvoker method)
    {
        if (this.InvokeRequired)
        {
            this.Invoke(method);
        }
        else
        {
            method.Invoke();
        }
    }

    public void UpdateUI()
    {
        this.UIThread(delegate
        {
            this.Label1.Text = "msg1";
            this.Label2.Text = "msg2";
        });
    }

    在需要更新界面的地方这么调用:this.UIThread(delegate{this.Label1.Text="msg1";...});。

    方法3,在一个方法里集中更新多个控件:

    public void UpdateUI()
    {
        if (this.InvokeRequired)
        {
            this.Invoke(new MethodInvoker(delegate { UpdateUI(); }));
        }
        else
        {
            this.Label.Text = "msg1";
            this.Labe2.Text = "msg2";
        }
    }
  • 相关阅读:
    How to Build Office Developer Tools Projects with TFS Team Build 2012
    查看hyper-v主机mac地址
    “Stamping” PDF Files Downloaded from SharePoint 2010
    PostgreSQL体系基本概念
    PostgreSQL 安装
    HDFS+MapReduce+Hive+HBase十分钟快速入门
    光照计算公式
    游戏中的碰撞
    数组
    扑克牌概率
  • 原文地址:https://www.cnblogs.com/anjou/p/2673103.html
Copyright © 2011-2022 走看看