zoukankan      html  css  js  c++  java
  • WPF 之 调用线程必须为 STA,因为许多 UI 组件都需要

    WPF中,代码中准备控制控件内容时,有时会报错:“ 调用线程必须为 STA,因为许多 UI 组件都需要 ”。

      如在winform下面,使用多线程时,控件的值读取是可以的,但如果要更改,那么就必须进行一些特别的处理。WPF中也一样。

      首先,WPF中,当报上面那个错误时,代码可以改成类似以下:

    复制代码
    void authOK(AuthorizationResult auth)  
    {  
        App.Current.Dispatcher.Invoke((Action)(() =>  
        {  
            labInfo.Content = "登录成功";  
            btnLogin.IsEnabled = true;  
      
            labUser.Content = auth.User.Name;  
            labToken.Content = auth.AccessToken;  
            loginWin.Close();  
            client.Close();  
        }));  
    }  
    复制代码

      Dispatcher是一个线程控制器,反正你要控制线程里跑的东西,就要经过它。那么WPF里面,有个所谓UI线程,后台代码不能直接操作UI控件,需要控制,就要通过这个Dispatcher。

    参考链接:https://www.cnblogs.com/xinaixia/p/5706096.html

  • 相关阅读:
    jqurey技术总结
    ie浏览器兼容问题小结
    FIS的合并压缩技术
    对js中数组的一些总结
    浅谈如何面向对象进行封装
    13th week blog
    12th week blog
    11th week blog
    10th week blog
    9th Week blog
  • 原文地址:https://www.cnblogs.com/xiohao/p/10208173.html
Copyright © 2011-2022 走看看