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();}}
}
程序运行结果
C# WinForm跨线程访问UI控件相关推荐
- C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)
概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现"线程间操作无效: 从不是创建控件的线程访问它"的异常.处理跨线程更新Winform UI控件常用 ...
- java 线程访问控件_C#多线程与跨线程访问界面控件的方法
本文实例讲述了C#多线程与跨线程访问界面控件的方法.分享给大家供大家参考.具体分析如下: 在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象.启用新线程去访问Web ...
- C#【委托/事件篇】跨线程访问窗体控件的方法
文章目录 一.直接调用方法,方法中使用委托[textBox1.InvokeRequired] 二.调用委托,委托进一步关联方法 1.使用委托[最基础的调用方法:委托五步法] 2.使用Action作为委 ...
- C#线程操作UI控件
在写winform程序时候,如果时间长的操作不用线程操作.那么会卡死UI,点击界面就体现为未响应.为此需要对耗时操作用线程处理,比如检验的监听程序就是一个死循环,不停检查文件夹或数据库又没有数据,然后 ...
- C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...
C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件"Form1"的线程访问它 网上的代码都比较复杂,还是这个简单 见代码, 简易解决办法: 主窗体代码 usin ...
- c#,c++,qt中多线程访问UI控件线程的问题汇总
c#和MFC中可以创建UI控件及模态/非模态对话框,Qt中只能在主UI线程中创建访问UI控件. c#和MFC中可以通过全局变量或指针句柄等方式在工作线程中访问其他UI线程控件,其中c#需要Invoke ...
- C#跨线程调用窗体控件的问题
前段时间遇到跨线程调用窗体控件的问题,其实一句话System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;就可以解决,但 ...
- 线程访问 DevExpress控件异常时 解决方法
线程访问 DevExpress控件异常时 解决方法 Control.CheckForIllegalCrossThreadCalls = false; DevExpress.Data.CurrencyD ...
- C#-WinForm跨线程修改UI界面
背景 在我做WinForm开发的过程中,经常会遇到耗时操作或阻塞操作.他们会引发软件的卡顿甚至假死,严重影响软件的使用.因此,这类耗时或阻塞的操作一般都会使用异步的方式去执行,不影响主线程(UI线程) ...
最新文章
- spark sql and hive 3g数据测试
- 第三方控件DevExpress的TreeList绑定XML文件
- 存储基础知识二 主要协议SCSI、FC、iSCSI
- Sharepoin学习笔记 —架构系列--02 Sharepoint的处理(Process)与执行模型(Trust Model) 1
- 算法导论 思考题12-1
- 谈谈android不同尺寸,不同分辨率的布局
- securecrt登录linux下载文件,Linux使用SecureCRT上传和下载文件教程
- html实现2048小游戏,html+css+js适合前端小白的实战全解(超详细)——2048小游戏(二)...
- VC dimension(Vapnik-Chervonenkis dimension)
- 卡巴斯基7.0反病毒一年激活码免费领取(官方活动,现已停止)
- 微信客户管理SCRM系统SDK
- 短期出差北京个人所见所闻所感
- html纵向时间轴代码,垂直时间轴HTML
- 大恒MER-1070-10GC相机 LINUX环境 QT开发记录
- 2021年度训练联盟热身训练赛第八场 自我总结
- TSL1.0升级到TSL1.2遇到的问题
- 【虚拟仿真】Unity3D中如何实现让3D模型显示在UI前面
- 仿百思不得其姐项目开发(粗略笔记,后期规范排版和更新)
- 微服务探索:nuoyi
- 笔记本购机测试软件大全