栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C# WinForm跨线程访问UI控件

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# WinForm跨线程访问UI控件

C# 跨线程访问控件

在做WinForm时,在UI线程之外调用控件会报异常:System.InvalidOperationException:“线程间操作无效: 从不是创建控件“label1”的线程访问它。”

我们只需在跨线程调用控件时增加如下代码:

if (this.InvokeRequired) 
{
	this.Invoke(new Action(() =>
	{
		lable1.Text = "Hello World!";
	}));
}

如下是我的demo

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

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

        private void ChangeControl()
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new Action(() =>
                {
                    lbl_msg.Text = "Hello Task!";
                }));
            }
        }
        private void btnTask_Click(object sender, EventArgs e)
        {
            Task.Run(()=> {
                ChangeControl();
            });

        }

        private void btnThread_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(()=>
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new Action(() =>
                    {
                        lbl_msg.Text = "Hello Thread!";
                    }));
                }
            }
            );
            thread.IsBackground = true;
            thread.Start();
        }
    }
}

程序运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号