WPF 之 调用线程必须为 STA,因为许多 UI 组件都需要
2016-07-26 08:44
591 查看
WPF中,代码中准备控制控件内容时,有时会报错:“ 调用线程必须为 STA,因为许多 UI 组件都需要 ”。
如在winform下面,使用多线程时,控件的值读取是可以的,但如果要更改,那么就必须进行一些特别的处理。WPF中也一样。
首先,WPF中,当报上面那个错误时,代码可以改成类似以下:
Dispatcher是一个线程控制器,反正你要控制线程里跑的东西,就要经过它。那么WPF里面,有个所谓UI线程,后台代码不能直接操作UI控件,需要控制,就要通过这个Dispatcher。
如在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。
相关文章推荐
- UITableView之分组案例
- 225. Implement Stack using Queues
- VirtualBox 修改UUID实现虚拟硬盘复制
- LeetCode 375. Guess Number Higher or Lower II
- SCU 4531 Cruel War II(DFS)
- Uva-11324 The Largest Clique(强连通分量缩点+DAGdp)
- 网页上传文件的两种实现:1 ,easyui;2,传统file标签
- StringBuffer与StringBuilder详解
- iOS 设置自带UISearchBar的背景颜色
- Vert.x Blueprint 系列教程(二) | 开发基于消息的应用 - Vert.x Kue
- Vert.x Blueprint 系列教程(二) | Vert.x Kue 教程(Web部分)
- UIView的使用注意点
- Codeforces 612C: Replace To Make Regular Bracket Sequence(栈)
- 信号发送函数sigqueue和信号安装函数sigaction
- 转载Request method 'OPTIONS' not supported
- mui ajax请求 登录
- 计算UILabel带行间距的行高
- Easyui非自带layout布局下数据列表的自适应
- Java Build Tools: Ant vs Maven vs Gradle
- easyui解决conbobox联动的问题