码迷,mamicode.com
首页 > 编程语言 > 详细

WPF 之 调用线程必须为 STA,因为许多 UI 组件都需要

时间:2019-01-02 15:00:34      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:app   登录   res   http   invoke   user   token   inf   strong   

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

WPF 之 调用线程必须为 STA,因为许多 UI 组件都需要

标签:app   登录   res   http   invoke   user   token   inf   strong   

原文地址:https://www.cnblogs.com/xiohao/p/10208173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!