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

  • 相关阅读:
    Mvc 简单分页代码
    算法
    atx
    Java8函数式编程(A)
    axios
    props
    vue 的keep alive使用注意项
    android帮助
    testng监听器方法执行顺序
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3259925.html
Copyright © 2011-2022 走看看