.NET跨线程访问控件

原创 2011年01月15日 13:00:00

前沿

.NET2.0之后禁止了直接跨线程访问控件,因为使用自己自定义的线程去访问主线程(主窗体)中的控件是不安全的。不过,可以通过下面两种方面实现跨线程访问控件:

(1)不使用委托:可以在构造函数或者窗体Load的代码里添加下面一句: 
Control.CheckForIllegalCrossThreadCalls = False
(2)委托方法的实现

正文

下面通过例子演示通过委托的方法来实现跨线程访问控件(自定义线程访问主线程中的ProgessBar控件)。

1、定义ProgessBar操作类

 

2、执行调用

Winform 让跨线程访问变得更简单

前言 由于多线程可能导致对控件访问的不一致,导致出现问题。C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出异常。近期在项目中碰到这个问题,首先...
  • dyllove98
  • dyllove98
  • 2013年07月15日 21:34
  • 9478

WPF不同线程之间的控件的访问

WPF不同线程之间的控件是不同访问的,为了能够访问其他线程之间的控件,需要用Dispatcher.Invoke执行一个新的活动即可。 例如: ? 1 2 3 4 5 6 7 8 9 10...
  • u011555996
  • u011555996
  • 2017年05月16日 15:50
  • 863

C# Winform项目中多线程环境下, 如何跨线程对Window窗体控件进行安全访问?

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 个人网站: http://www.x86asm.com QQ交流: 643439947 编程生涯: 2001年~至今[共15年...
  • Code_GodFather
  • Code_GodFather
  • 2016年02月29日 15:35
  • 4678

异步委托跨线程访问控件解决界面卡死

下面来看第二种方案,就是使用delegate和invoke来从其他线程中控制控件信息。网上有很多人写了这种控制方式,然而我看了很多这种帖子,表明上看来是没有什么问题的,但是实际上并没有解决这个问题,首...
  • ryong1267
  • ryong1267
  • 2015年08月06日 15:57
  • 873

初试C#多线程_跨线程访问控件

C#里创建线程的方式是   Thread t = new Thread(new ThreadStart(this.DoSomething));  t.Start();           里面的DoS...
  • XiaoPANGXia
  • XiaoPANGXia
  • 2015年03月17日 20:08
  • 1408

C#线程之间操作无效|不允许访问控件(c# 线程间操作无效: 从不是创建控件“”的线程访问它)

解决方法 1.创建事件委托 c#不允许对跨线程的控件的访问,如需操作跨线程的操作需要通过委托(delegate),即是函数指针来操作跨线程。说明dgList控件不是该线程的控件,需要使用委托操作。...
  • G1036583997
  • G1036583997
  • 2013年08月14日 09:19
  • 3165

C# 关于跨线程访问控件问题

所谓跨线程调用控件就是一个线程调用另外一个线程的控件。 常见使用情况,比如:当我们开了一个在后台监听消息的线程以后,需要将消息内容添加到主窗体的消息框内显示出来。 这时候,我们就需要使用跨线程...
  • linyujie0927
  • linyujie0927
  • 2017年05月14日 22:31
  • 301

C#线程中安全访问控件(重用委托,避免繁复的delegate,Invoke)总结

C#线程中安全访问控件(重用委托,避免繁复的delegate,Invoke)总结 1.第一种,不安全,当线程过多后,timer控件和线程中同时访问窗体控件时,有时会出现界面重绘出...
  • kasama1953
  • kasama1953
  • 2016年09月23日 00:38
  • 922

C#串口接受数据跨线程操作控件(留存+备份)

delegate void ChangeTextEventHandler(string a); public void changetext(string a) { ...
  • G1036583997
  • G1036583997
  • 2013年11月15日 16:33
  • 2189

C# 跨线程调用控件

在C#应用程序开发中,我们经常要把UI线程和工作线程分开,防止界面停止响应。同时我们又需要在工作线程中更新UI界面上的控件,下面介绍几种常用的方法 线程间操作无效 界面上有一个button...
  • bigpudding24
  • bigpudding24
  • 2015年03月10日 14:20
  • 484
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: .NET跨线程访问控件
举报原因:
原因补充:

(最多只允许输入30个字)