博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WIN FORM 多线程更新UI(界面控件)
阅读量:6614 次
发布时间:2019-06-24

本文共 914 字,大约阅读时间需要 3 分钟。

方法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
";
    }
}

 

 

转载地址:http://mthso.baihongyu.com/

你可能感兴趣的文章
Webpack4 不深不浅的实践教程
查看>>
nginx1.9+做TCP代理(端口转发)
查看>>
HTML元素的默认CSS设置介绍
查看>>
CSS-图片不变形设置
查看>>
Git异常:fatal: could not create work tree dir 'XXX': No such file or directory
查看>>
GNU make manual 翻译(八十二)
查看>>
python批量下载图片的三种方法
查看>>
/bin/bash^M: bad interpreter: 没有那个文件或目录
查看>>
iOS - OC NSData 数据
查看>>
Java web 开发填坑记 1 -如何正确的下载 eclipse
查看>>
iOS - Quartz 2D 第三方框架 Charts 绘制图表
查看>>
MM顾问的常见面试问题(ZZ)
查看>>
转:Windows 8上强制Visual Studio以管理员身份运行
查看>>
迟来的加勒比海盗3 观后
查看>>
类与对象 - PHP手册笔记
查看>>
谈一谈互联网创业补贴变味后的现象
查看>>
MapGIS转Shp文件的单位问题
查看>>
使用Karate轻松实现自动API测试
查看>>
React
查看>>
CentOS -bash: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8)
查看>>