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
联系方式
![](https://images.cnblogs.com/cnblogs_com/xiohao/429339/o_869851517382210591.png)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步