使用“;等待”;在Dispatcher.RunAsync()中引发异常
本文关键字:异常 Dispatcher 等待 使用 RunAsync | 更新日期: 2023-09-27 18:20:30
相关代码如下:
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
时就完成了,而不是在实际完成时。这意味着,无论等待此方法的代码是什么,都会在应该继续之前继续执行。