1

変更を反映するためにMetroStyleアプリのUIを更新/更新しようとしています。
Windowsフォームでコントロールを再描画するには、次のコマンドを使用するだけです。

this.Refresh();    

メトロスタイルアプリで同様の結果を得るにはどうすればよいですか?

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つのステートメントが実行されなかったかのように。

どうすればこれを修正できますか?

私は見ました:メトロアプリでUIを更新する方法は?しかし、それは役に立ちませんでした。

4

1 に答える 1

6

あなたが書いたコードは正しくありません。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"
} 

awaitkeyworldの追加に注意してください

于 2012-08-17T20:06:11.730 に答える