【发布时间】:2012-02-17 07:09:42
【问题描述】:
如何通过 Silverlight 回调执行多个 UI 更新?
例如,我希望用户单击一个按钮,让 UI 进行更改,做一些工作,然后进行另一项更改...相反,用户单击按钮,回调似乎在后台执行然后所有的 UI 变化都在我眼前一闪而过。
MainPage.xaml:
<Grid x:Name="LayoutRoot" Background="White" >
<TextBlock Height="23" Name="textBlock1" Text="TextBlock" VerticalAlignment="Top"/>
<Button Click="button1_Click" Content="Button" Height="23" Name="button1" Width="75" />
</Grid>
MainPage.xaml.cs:
private void button1_Click(object sender, RoutedEventArgs e)
{
textBlock1.Text = "1";
// also tried Thread.Sleep(5000);
Dispatcher.BeginInvoke(() => Thread.Sleep(5000));
textBlock1.Text = "2";
}
【问题讨论】:
-
您可以在工作完成后触发一个事件,而不是在工作完成期间让线程休眠。然后,该事件的侦听器将进行第二次 UI 更改。
-
@iimpact 睡眠电话只是填补工作。问题是,为什么第一次 UI 更新不发生在 Sleep 调用之前?
标签: c# silverlight callback