1

我正在尝试刷新/更新 Metro Style 应用程序的 UI 以反映更改。
要重绘 Windows 窗体中的控件,您可以简单地使用:

this.Refresh();    

如何在 Metro Style 应用程序中获得类似的结果?

考虑一下 C# 中的这个简单示例:

private async void Button_Click(object sender, RoutedEventArgs e)
{
    btnStatus.Content = "Test started";
    Task.Delay(3000); // Wait 3 seconds
    btnStatus.Content = "Test Ended"
} 

我需要做的是:显示“开始”消息,等待几秒钟,然后显示“结束”消息。但是,当它运行时,btnStatus 立即显示“TestEnded”——就好像前 2 条语句没有执行一样。

我怎样才能解决这个问题?

我看过:如何在 Metro 应用程序中刷新 UI?但这没有帮助。

4

1 回答 1

6

The code you wrote is incorrect. Task.Delay() runs async, so your code naturally continues on.

This will work correctly...

private async void Button_Click(object sender, RoutedEventArgs e)
{
    btnStatus.Content = "Test started";
    await Task.Delay(3000); // Wait 3 seconds
    btnStatus.Content = "Test Ended"
} 

Note the addition of the await key world

于 2012-08-17T20:06:11.730 回答