相关代码如下:
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
,而不是真正完成时。这意味着,等待该方法的任何代码都在继续进行,而不应该继续进行。