多线程访问winform控件出现异常的解决方法
一. 多线程访问winform控件出现异常的解决方法
1. 问题描述
<1> 如果创建某控件的线程之外的其他线程试图调用该控件,则会引发一个 InvalidOperationException异常。
(1) 并提示消息:“从不是创建控件 control name 的线程访问它。”
<2> 默认情况下,winform控件只能由创建该控件的线程调用 。
(1) 如果要在新的线程中调用该控件,则需要使用控件的invoke方法来进行。
************************************************************************************************
2. 解决方法1:
<1> 说明:非线程安全方式。
(1) 代码放在构造函数中。
<2> 设置Control类的静态属性CheckForIllegalCrossThreadCalls为false。
(1) 形式:Control.CheckForIllegalCrossThreadCalls = false;
************************************************************************************************
3. 解决方法2:
<1> 说明:线程安全方式。
<2> 定义委托:delegate void CrossThreadCallHandler( object[] datas );
<3> 定义访问winform控件的方法:
void SetControlValue( object[] datas )
{
//访问控件的代码
}
<4> 在新线程中调用winform控件
if ( 控件ID.InvokeRequired )
{
控件ID.Invoke( new CrossThreadCallHandler( SetControlValue ) , new object[] { 值1,值2 } );
}
else
{
//访问控件的代码
}
多线程访问winform控件出现异常的解决方法的更多相关文章
- [转] c#中 多线程访问winform控件
原文 c#中多线程访问winform控件的若干问题小结 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来解决这个问题,下面我将详细的 ...
- c#中多线程访问winform控件的若干问题
我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来解决这个问题,下面我将详细的介绍. 首先来看传统方法: public partial ...
- Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决
有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfr ...
- C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)
概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常.处理跨线程更新Winform UI控件常用的方法有4种:1. ...
- C#中使用多线程访问Winform中控件的若干问题
我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial ...
- (转)c#(wince)中使用多线程访问winform中控件的问题
我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial ...
- .NET中跨线程访问winform控件的方法
1 第一种方式 MethodInvoker invoker = () => { richTextBox1.AppendText(_ClientSocketModelConnectedEvent. ...
- 混合开发 webview 中file 控件 点击后无反应解决方法
最近在做个项目 ,需要 使用 file 控件上传 图片到服务器 ,在手机浏览器中 可以正常选择照片,但是放到 android 应用中的webview中,file 控件点击后就没有反应. 百度了一番后, ...
- C# DataGridView控件清空数据完美解决方法
C# DataGridView控件绑定数据后清空数据在清除DataGridview的数据时: 1.DataSource为NULL(DataGridView.DataSource= null;)这样会将 ...
随机推荐
- ubuntu下安装mysql及外网访问设置
这么多年一直是mssql或者Oracle,mysql基本没用过,借着.net即将跨平台之际,也mysql一把.windows安装基本没啥难度,然后就是试了把linux下...结果坑不少,由于linux ...
- iphone 如何清空UIWebView的缓存
iphonecachingapplicationcookiescacheperformance I actually think it may retain cached information ...
- 零基础学通C语言,福利来啦!!!!zfhl.ke.qq.com
- 【Unity3D】Unity自带组件—完成第一人称人物控制
1.导入unity自带的Character Controllers包 2.可以看到First Person Controller组件的构成 Mouse Look() : 随鼠标的移动而使所属物体发生旋 ...
- Banner 广告设计技巧及经验(转自UI中国)
经常听到banner这个词,但是banner是什么意思呢?引用百度知道的解释:banner可以作为网站页面的横幅广告,也可以作为游行活动时用的旗帜,还可以是报纸杂志上的大标题.Banner主要体现中心 ...
- 常用SQL语句汇总整理
1.SQL 插入语句得到自动生成的递增ID 值 insert into Table1(Name,des,num) values (''ltp'',''thisisbest'',10); select ...
- Fedora22(Gnome桌面)安装Chrome
1.从官网上(http://www.google.cn/chrome/)下载到相对应系统版本的rpm包.这里我的是: google-chrome-stable_current_x86_64.rpm 此 ...
- 微软Azure开始支持Docker技术
前一段时间还在与微软的技术人员讨论媒体转换服务的效率问题,如果应用 Docker将会有质的提高,没想到国外的Azure已经开始支持了,相信国内Azure支持也不远了.微软正在努力确保Azure成为开发 ...
- Xcode 6 越狱开发基础
最近接触到XCode越狱开发的问题,越狱开发首先iphone设备得越狱,然后安装Appsync,安装之后,安装ipa将不再验证程序签名的有效性,不签名的程序也可以直接在设备上运行,只需要保证IPA本身 ...
- [Hive - LanguageManual] Select base use
Select Syntax WHERE Clause ALL and DISTINCT Clauses Partition Based Queries HAVING Clause LIMIT Clau ...