1

関連するコードは次のとおりです。

Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
{
    MessageDialog dialog = new MessageDialog("Wrong username or passwork. Please try again.");
    await dialog.ShowAsync();
    this.LoginButton.IsEnabled = true;
});

これを実行すると、E_ACCESSDENIED がスローされます。

ここで async-await は許可されていますか?

4

1 に答える 1

5

Dispatcher.RunAsyncasyncデリゲートを取るようには設計されていません。待機できるように、それ自体が a を返すように設計されてTaskいます。与えるメソッドは非非同期メソッドである必要があります。

受け入れるデリゲートの実際の署名はpublic delegate void DispatchedHandler()

デリゲートは void を返すため、実際に完了したときではなく、初めてRunAsync終了したと見なされます。awaitsこれは、このメソッドを待機しているコードが、実行される前に続行されていることを意味します。

于 2013-07-01T14:38:06.757 に答える