相关代码如下:

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。

这里允许异步等待吗?

最佳答案

Dispatcher.RunAsync不能接受async委托。它被设计为自身返回Task,以便可以等待它。您提供的方法应该是非异步方法。

它接受的委托的实际签名为public delegate void DispatchedHandler()

因为委托无效,所以返回RunAsync会认为它是第一次完成awaits,而不是真正完成时。这意味着,等待该方法的任何代码都在继续进行,而不应该继续进行。

07-26 09:29