WPF / Win Form:多线程去修改或访问UI线程数据的方法( winform 跨线程访问UI控件 )
2024-08-24 09:05:13
WPF:谈谈各种多线程去修改或访问UI线程数据的方法
http://www.cnblogs.com/mgen/archive/2012/03/10/2389509.html
子线程非法访问UI线程的数据,会产生如下错误:
InvalidOperationException:The calling thread cannot access this object because a different thread owns it.
这是由于UI线程的数据不能直接被其他线程访问或者修改。
解决方案:
采用Dispatcher类的Invoke()或BeginInvoke()方法:
this.Dispatcher.BeginInvoke(new Action(() => Title = "Mgen"));
Win Form 中没有dispatcher,dispatcher存在于WPF/Silverlight中。如果想在win form中实现异步编程或是跨线程操作可以考虑委托或backgroundworker。
winform中测试通过代码:
方法1:
this.BeginInvoke(new Action(() => txtbox_pid.Text = pid));
方法2:
lable2.Invoke(new EventHandler(delegate { label2.Text = "TEST"; }));
更多参考:
C# 前台线程与后台线程的区别和联系 - petercao - 博客园
http://www.cnblogs.com/bluestorm/p/3282156.html
最新文章
- 25 highest paying companies: Which tech co outranks Google, Facebook and Microsoft?
- resize
- c++ 二维数组传递
- 造成OOM(内存溢出)的几种情况
- python 笔记
- 用mel编写自定义节点的属性编辑器界面
- android AlarmManager 详解
- js json与字符串转换
- struts2的记住账号密码的登录设计
- hibernate之关系映射上
- Google浏览器的缓存文件过大(mega网站导致的)
- 微软为.NET程序员带来了最优的跨平台开发体验-WSL
- bzoj千题计划323:bzoj1951: [Sdoi2010]古代猪文(Lucas+CRT+欧拉定理)
- sigar在Centos和Windows下使用java系统软硬件配置信息
- cogs791 [HAOI2012] 音量调节
- day4. python学习之字典
- Mybatis 删除多条数据XML SQL语句删除
- wget/curl查看请求响应头信息
- java中利用if_else if循环求税率
- linux下Oracle 相关命令