相关代码如下:
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?
答案 0 :(得分:5)
Dispatcher.RunAsync
并非旨在接受async
代表。它被设计为自己返回Task
以便可以等待它。您提供的方法应该是非异步方法。
它接受的代表的实际签名是public delegate void DispatchedHandler()
因为委托是无效的,所以RunAsync
会认为它是awaits
第一次完成,而不是在它实际完成时完成。这意味着等待这种方法的任何代码都应该继续进行。