【发布时间】:2016-10-29 06:57:58
【问题描述】:
在一个方法中,我有一个像这样的 try catch 块:
try
{
// do something
}
catch (Exception ex)
{
MessageDialog message = new MessageDialog(ex.ToString());
message.ShowAsync();
}
我收到message.ShowAsync() 行的以下警告:
由于不等待此调用,因此在调用完成之前继续执行当前方法。考虑将 'await' 运算符应用于调用结果。
说到做到:
try
{
// do something
}
catch (Exception ex)
{
MessageDialog message = new MessageDialog(ex.ToString());
await message.ShowAsync();
}
现在我得到一个例外:
“await”运算符只能在异步方法中使用。考虑使用 'async' 修饰符标记此方法并将其返回类型更改为 'Task'。
我什至尝试这样做以避免在 catch 块内等待:
Exception exception;
try
{
// do something
}
catch (Exception ex)
{
exception = ex;
}
if (exception != null)
{
MessageDialog message = new MessageDialog(ex.ToString());
message.ShowAsync();
}
但是,这不会改变任何事情。
在这种情况下,我必须做什么才能使用await? MessageDialog.ShowAsync() 就 IntelliSense 显示返回 Windows.Foundation.IAsyncOperation<IUICommand> 的可等待方法而言。
【问题讨论】:
-
这个错误告诉你如何修复它:考虑用'async'修饰符标记这个方法,并将它的返回类型改为'Task'。.
-
绝对必读:Asynchronous Programming with async and await (C#)。显然,还有阅读错误消息。
标签: c# asynchronous uwp