我试着用标签把消息放在普通的表格上。关于下面的代码,我想看到所有的消息,我正在尝试放置,但我只看到消息后的睡眠()。
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"/>谢谢。
发布于 2014-04-06 20:20:58
问题是您正在用户界面线程上睡觉。
在执行第一行之后,您睡在UI线程上,但刷新UI是UI线程的责任(UI线程刷新呈现调度程序优先级上的UI )。因此,在执行第一行之后没有看到任何更新,因为UI线程从来没有时间执行在dispatcher上排队的呈现优先级项。
理想情况下,您应该使用DispatcherTimer在UI线程上等待一定的时间间隔,然后在间隔时间过去后进行更新。
然而,快速而肮脏的解决方案是在UI线程上分派空的委托,而Dispatcher优先级设置为在您睡前呈现它,以便在线程处于休眠状态之前执行UI刷新部分。
lbStatus.Content = "Synchronizing Customers";
lbStatus.Dispatcher.Invoke((Action)(() => { }), DispatcherPriority.Render);
Thread.Sleep(1000);
lbStatus.Content = "Synchronizing Estimates";这里的想法是,一旦您在具有呈现优先级的UI调度程序上对空委托进行排队,它将执行所有优先级较高或等于呈现的挂起项。由于UI刷新是在呈现优先级上完成的,因此UI将被刷新。
https://stackoverflow.com/questions/22899324
复制相似问题