zoukankan      html  css  js  c++  java
  • WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案

    WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 与 Winfrom [线程间操作无效: 从不是创建控件“label1”的线程访问它。]错误同属于在线程中操作界面UI元素导致。

    解决方法: 
    WPF:Dispatcher.Invoke 方法,只有在其上创建 Dispatcher 的线程才可以直接访问 DispatcherObject。若要从不同于在其上创建 DispatcherObject 的线程的某个线程访问 DispatcherObject,请对与 DispatcherObject 关联的 Dispatcher 调用 Invoke 或 BeginInvoke。需要强制线程安全的 DispatcherObject 的子类可以通过对所有公共方法调用 VerifyAccess 来强制线程安全。这样可以保证调用线程是在其上创建 DispatcherObject 的线程。 
    代码: 

     
    1. this.lbl.Dispatcher.Invoke(new Action(()=>{ this.lbl.Text = "this is a test!!!"; }));

    Winfrom:Control.Invoke 方法 (Delegate),在拥有此控件的基础窗口句柄的线程上执行指定的委托。 
    代码: 

     
      1. this.lbl.Invoke(new Action(()=>{ this.lbl.Text = "this is a test!!!"; }));
  • 相关阅读:
    topcoder srm 681 div1
    topcoder srm 683 div1
    topcoder srm 684 div1
    topcoder srm 715 div1
    topcoder srm 685 div1
    topcoder srm 687 div1
    topcoder srm 688 div1
    topcoder srm 689 div1
    topcoder srm 686 div1
    topcoder srm 690 div1 -3
  • 原文地址:https://www.cnblogs.com/huangsheng/p/5986031.html
Copyright © 2011-2022 走看看