当前位置:网站首页>WPF 线程操纵UI问题
WPF 线程操纵UI问题
2022-06-21 20:41:00 【zLulus】
WPF只允许UI线程修改UI,其他线程必须通过Invoke、委托(安全性)
Winform可以开启/关闭“只允许UI线程修改UI”
在WPF中非UI线程修改UI的方法:Dispatcher
非UI线程直接修改UI,会报错
System.InvalidOperationException:“调用线程无法访问此对象,因为另一个线程拥有该对象。”
正确的做法是使用Dispatcher
Dispatcher简单暴力,适合小工作量的修改一些界面内容
长期后台工作应该考虑使用BackgroundWorker,有很多相关功能库
Task t = new Task(() =>
{
//wrong
//NameLabel.Content = "我用非UI线程修改NameLabel的文字,失败了";
NameLabel.Dispatcher.Invoke(new Action(delegate
{
NameLabel.Content = "我用UI线程修改了NameLabel的文字";
}));
Thread.Sleep(5000);
this.Dispatcher.Invoke(new Action(() =>
{
NameLabel.Content = "我用UI线程修改了NameLabel的文字-2";
}));
Thread.Sleep(5000);
this.Dispatcher.BeginInvoke(new Action(() =>
{
NameLabel.Content = "我用UI线程修改了NameLabel的文字-3";
}));
});
t.Start();
Dispatcher使用一个专用的 UI 线程来完成界面的操作和更新,这个线程会关联一个唯一的WPF Dispatcher 对象,用于调度按优先顺序排列的工作项队列。Application.Run() 实际上就是对 Dispatcher.Run() 的间接调用。
WPF Dispatcher通过循环来处理工作项队列,这个循环通常被成为 “帧 (DispatcherFrame)”。Dispatcher.Run() 创建并启动这个帧,这也是 Application.Run() 启动消息循环的最终途径。

参考资料
示例代码
边栏推荐
- Thresholdtypes of opencvsharp threshold segmentation threshold function
- MATLAB在做图像处理时容易出现的一个误区:为提高运算速度使用预先声明的零矩阵存储图像数据
- 翻译软件Bob安装教程
- Qt滚动区域QScrollArea
- 利用do while循环,分别计算1-100中奇数的和、偶数的和【方法一】
- LeetCode-543-二叉树的直径
- Install RkNN toolkit Lite2 for itop-3568 development board
- 利用for循环计算n!的值
- 左手代码,右手开源,开源路上的一份子
- 利用while循环,分别计算1-100中奇数的和、偶数的和【方法二】
猜你喜欢
随机推荐
利用for循环,分别计算1-100中奇数的和、偶数的和【方法二】
Using bioedit to do multiple sequence consistency alignment
企业微信内置应用h5开发记录-1
Five minutes, Xie Yunyuan
TRNA analysis using trnascan se
【深入理解TcaplusDB技术】如何实现Tmonitor单机安装
How C # aboutbox displays its defined interface
Technology sharing | a clustering incremental statistical SQL requirement in MySQL
Use the for loop to calculate n! Value of
技术分享 | MySQL中一个聚类增量统计 SQL 的需求
秒懂微服务
从-1开始实现一个中间件
小程序与工业互联网能够相辅相成的原因
[deeply understand tcapulusdb technology] tmonitor background one click installation
HIC Pro | HIC data processing tool
FPGA之道——FPGA开发流程之项目方案与FPGA设计方案
IP guard printing control to prevent information disclosure of printing channels
nuxt ssr打包和部署
安超云入选《CIOReview》2022年亚太区“十大云计算解决方案提供商”
UWP 手写板InkCanvas








