• WPF非UI线程中调用App.Current.MainWindow.Dispatcher提示其他线程拥有此对象,无权使用。


      大家都知道在WPF中对非UI线程中要处理对UI有关的对象进行操作,一般需要使用委托的方式,代码基本就是下面的写法

        App.Current.MainWindow.Dispatcher.Invoke(new Action(() =>
                {
                    //TODO:更改UI相关的操作
                 }));

      我以前也总是如此写法,没出现过毛病,可是偏偏就在今日,我在串口接收事件中这样写报错了,错误提示说:“

    其他线程拥有此对象,此线程不能使用”,对于没有多少底子的我当时肯定是一脸蒙圈了,还是去群里问问吧,一问果

    然是高手给出了解答,问题就出在对App.Current.MainWindow的调用上,因为这个调用会触发VerfiyAccess(),所以

    会报线程调用异常的错误。既然知道了问题所在,那解决办法是什么呢?

      答案就是,一般都会在一个静态类中存储主窗体的Dispatcher对象,以备不时之需啊,而且非常环保,比处处都要写

    App.Current.MainWindow.Dispatcher.Invoke 这么一长串方便多了。
    
    
  • 相关阅读:
    css定位
    题解 P2345 【奶牛集会】
    浅谈主席树
    浅谈Manacher算法
    CSP2019 游记
    P5025 [SNOI2017]炸弹
    浅谈2-SAT
    DAY 5模拟赛
    DAY 3
    Luogu P2915 [USACO08NOV]奶牛混合起来
  • 原文地址:https://www.cnblogs.com/cangyue080180/p/5670782.html
Copyright © 2020-2023  润新知