【问题标题】:How to await async method inside ExecutePostProcessingAsync如何在 ExecutePostProcessingAsync 中等待异步方法
【发布时间】:2017-01-05 12:16:18
【问题描述】:

我使用来自 http://arcware.net/upload-and-download-files-with-web-api-and-azure-blob-storage/ 的代码将 blob 上传到 azure。使用 ExecutePostProcessingAsync() 方法,我想调用一个调整图像大小并使用异步代码的方法。

我想在外观(缩小)中使用它的方法如下:

            public override Task ExecutePostProcessingAsync()
            {
              //some code


              //I would like to await the image resizer method here before going any further
              resizer.ScaleImage();

             //Some more code here before returning
             return base.ExecutePostProcessingAsync();
            }

如果我将异步添加到这样的方法中:public override async Task ExecutePostProcessingAsync()

5+ 错误将弹出参考问题以及错误:

"是一个返回'Task'的异步方法,return关键字后面不能跟对象表达式。你打算返回'Task'吗?"

问题:

在这个方法中是否有 await 一个方法?任何帮助或输入表示赞赏,谢谢!

【问题讨论】:

  • return await base.ExecutePostProcessingAsync();

标签: c# asp.net asynchronous asp.net-web-api async-await


【解决方案1】:

async 关键字允许使用await 关键字。话虽如此,正确的语法是不返回代表操作的Task,而是简单地返回await。考虑以下几点:

public override async Task ExecutePostProcessingAsync()
{
    await resizer.ScaleImageAsync();
    await base.ExecutePostProcessingAsync();
}

注意如何而不是尝试返回代表基本执行的Task,即; base.ExecutePostProcessingAsync() 我们只是 await

【讨论】:

  • 谢谢,试过了,但我得到了同样的错误信息
  • @mattias 尝试更新版本。完全没有理由返回,只需await
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
相关资源
最近更新 更多