zoukankan      html  css  js  c++  java
  • WPF / Win Form:多线程去修改或访问UI线程数据的方法( winform 跨线程访问UI控件 )

    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

  • 相关阅读:
    测 试 报 告模板
    浅谈如何设计自动化测试框架
    GET与POST类型接口
    测试用例设计总结
    Java OO知识总结
    Java基础知识总结
    MIT 6.824学习笔记3 Go语言并发解析
    Go语言_并发
    MIT 6.824学习笔记4 Lab1
    Leetcode Lect3 二分法总结
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3259925.html
Copyright © 2011-2022 走看看