多线程访问winform控件出现异常的解决方法

时间:2022-09-24 10:16:34

一.  多线程访问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控件出现异常的解决方法的更多相关文章

  1. &lbrack;转&rsqb; c&num;中 多线程访问winform控件

    原文 c#中多线程访问winform控件的若干问题小结 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来解决这个问题,下面我将详细的 ...

  2. c&num;中多线程访问winform控件的若干问题

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来解决这个问题,下面我将详细的介绍. 首先来看传统方法: public partial ...

  3. Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

    有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfr ...

  4. C&num; Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)

    概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常.处理跨线程更新Winform UI控件常用的方法有4种:1. ...

  5. C&num;中使用多线程访问Winform中控件的若干问题

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial  ...

  6. (转)c&num;(wince)中使用多线程访问winform中控件的问题

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法:  public partial ...

  7. &period;NET中跨线程访问winform控件的方法

    1 第一种方式 MethodInvoker invoker = () => { richTextBox1.AppendText(_ClientSocketModelConnectedEvent. ...

  8. 混合开发 webview 中file 控件 点击后无反应解决方法

    最近在做个项目 ,需要 使用 file 控件上传 图片到服务器 ,在手机浏览器中 可以正常选择照片,但是放到 android 应用中的webview中,file 控件点击后就没有反应. 百度了一番后, ...

  9. C&num; DataGridView控件清空数据完美解决方法

    C# DataGridView控件绑定数据后清空数据在清除DataGridview的数据时: 1.DataSource为NULL(DataGridView.DataSource= null;)这样会将 ...

随机推荐

  1. Storm Windowing storm滑动窗口简介

    Storm Windowing 简介 Storm可同时处理窗口内的所有tuple.窗口可以从时间或数量上来划分,由如下两个因素决定: 窗口的长度,可以是时间间隔或Tuple数量: 滑动间隔(slidi ...

  2. 拼图游戏&lpar;js&comma;C&num;&comma;java三种语言&rpar;

    <html> <head> <meta charset="utf-8"> <style type="text/css" ...

  3. Asp&period;net操作Excel----NPOI&excl;&excl;&excl;&excl;1

    前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使 用NPOI能够帮助开发者在没有安装微软Office的情况下读写Off ...

  4. 使用开源的PullToRefreshScrollView scrollTo和scrollby遇到的问题

    在项目中使用了开源的com.handmark.pulltorefresh.library 下拉刷新组件,当中使用了PullToRefreshScrollView ,须要调用scrollTo或者scro ...

  5. 阿里云资深DBA专家罗龙九&colon;云数据库十大经典案例分析【转载】

    阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...

  6. ubuntu下进入root错误解决方法

    1.进入root用户提示su: Authentication failure roots@ubuntu:~$ su - Password: su: Authentication failure 2.通 ...

  7. SpringSecurity实现用户名密码登录(Token)

    传统的应用是将Session放在应用服务器上,而将生成的JSESSIONID放在用户浏览器的Cookie中,而这种模式在前后端分离中就会出现以下问题 1,开发繁琐. 2,安全性和客户体验差 3,有些前 ...

  8. Java Timer&comma; TimerTask&comma; Timer&period;Schedule

    schedule的意思(时间表.进度表) timer.schedule(new TimerTask(){ void run()},0, 60*60*1000);timer.schedule(new M ...

  9. 三、并行编程 - Task同步机制。TreadLocal类、Lock、Interlocked、Synchronization、ConcurrentQueue以及Barrier等

    在并行计算中,不可避免的会碰到多个任务共享变量,实例,集合.虽然task自带了两个方法:task.ContinueWith()和Task.Factory.ContinueWhenAll()来实现任务串 ...

  10. 去除html代码中的标签

    public static String htmlText(String inputString) { String htmlStr = inputString; //含html标签的字符串 Stri ...