我正在尝试刷新/更新Metro Style应用的用户界面以反映更改。
要重画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”-好像前两个语句没有执行。

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

我看过:How to refresh the UI in a metro app?,但没有帮助。

最佳答案

您编写的代码不正确。 Task.Delay()异步运行,因此您的代码自然会继续进行。

这将正常工作...

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


注意等待密钥世界的添加

10-07 13:15