首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF发送消息

WPF发送消息
EN

Stack Overflow用户
提问于 2014-04-06 20:06:03
回答 1查看 53关注 0票数 0

我试着用标签把消息放在普通的表格上。关于下面的代码,我想看到所有的消息,我正在尝试放置,但我只看到消息后的睡眠()。

代码语言:javascript
复制
lbStatus.Content = "Synchronizing Customers";
Thread.Sleep(1000);
lbStatus.Content = "Synchronizing Estimates";

    <Label Content="" Height="28" Name="lbStatus" Margin="159,60,0,0" HorizontalAlignment="Center" VerticalAlignment="Top" Width="207" FontSize="12" Visibility="Hidden" Foreground="Blue"/>

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-06 20:20:58

问题是您正在用户界面线程上睡觉。

在执行第一行之后,您睡在UI线程上,但刷新UI是UI线程的责任(UI线程刷新呈现调度程序优先级上的UI )。因此,在执行第一行之后没有看到任何更新,因为UI线程从来没有时间执行在dispatcher上排队的呈现优先级项。

理想情况下,您应该使用DispatcherTimer在UI线程上等待一定的时间间隔,然后在间隔时间过去后进行更新。

然而,快速而肮脏的解决方案是在UI线程上分派空的委托,而Dispatcher优先级设置为在您睡前呈现它,以便在线程处于休眠状态之前执行UI刷新部分。

代码语言:javascript
复制
lbStatus.Content = "Synchronizing Customers";
lbStatus.Dispatcher.Invoke((Action)(() => { }), DispatcherPriority.Render);
Thread.Sleep(1000);
lbStatus.Content = "Synchronizing Estimates";

这里的想法是,一旦您在具有呈现优先级的UI调度程序上对空委托进行排队,它将执行所有优先级较高或等于呈现的挂起项。由于UI刷新是在呈现优先级上完成的,因此UI将被刷新。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22899324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档