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

最新文章

  1. 25 highest paying companies: Which tech co outranks Google, Facebook and Microsoft?
  2. resize
  3. c++ 二维数组传递
  4. 造成OOM(内存溢出)的几种情况
  5. python 笔记
  6. 用mel编写自定义节点的属性编辑器界面
  7. android AlarmManager 详解
  8. js json与字符串转换
  9. struts2的记住账号密码的登录设计
  10. hibernate之关系映射上
  11. Google浏览器的缓存文件过大(mega网站导致的)
  12. 微软为.NET程序员带来了最优的跨平台开发体验-WSL
  13. bzoj千题计划323:bzoj1951: [Sdoi2010]古代猪文(Lucas+CRT+欧拉定理)
  14. sigar在Centos和Windows下使用java系统软硬件配置信息
  15. cogs791 [HAOI2012] 音量调节
  16. day4. python学习之字典
  17. Mybatis 删除多条数据XML SQL语句删除
  18. wget/curl查看请求响应头信息
  19. java中利用if_else if循环求税率
  20. linux下Oracle 相关命令

热门文章

  1. ZigBee安全相关
  2. c++ string 拼接 int错误
  3. C++ 嵌入汇编 获取CPU信息
  4. App性能提升方法
  5. unity 3消 游戏
  6. JAVA的字节码技术
  7. ESB概述
  8. hive中简单介绍分区表
  9. SQL随机数的生成
  10. Basic Operation about Linux