【问题标题】:Error when using await with MessageDialog.ShowAsync()将 await 与 MessageDialog.ShowAsync() 一起使用时出错
【发布时间】: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();
}

但是,这不会改变任何事情。

在这种情况下,我必须做什么才能使用awaitMessageDialog.ShowAsync() 就 IntelliSense 显示返回 Windows.Foundation.IAsyncOperation<IUICommand> 的可等待方法而言。

【问题讨论】:

标签: c# asynchronous uwp


【解决方案1】:

您的函数必须是“异步”才能使用异步运算符:

例如:

 private async void Test()
 {
    MessageDialog message = new MessageDialog(ex.ToString());
    await message.ShowAsync();
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2019-04-15
    • 2014-06-19
    • 2018-01-14
    • 2018-09-12
    相关资源
    最近更新 更多