如何在ExecutePostProcessingAsync中等待异步方法

时间:2016-08-29 12:45:32

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

我使用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();
            }

如果我向这样的方法添加async:public override async Task ExecutePostProcessingAsync()

出现参考问题以及错误时会出现5+错误:

"是一个返回'任务'的异步方法,返回关键字后面不能跟一个对象表达式。您是否打算返回'任务'?"

问题:

是否有等待此方法中的方法?感谢任何帮助或意见,谢谢!

1 个答案:

答案 0 :(得分:1)

async关键字可以使用await关键字。话虽如此,正确的语法是不返回代表操作的Task,而只返回await它。请考虑以下事项:

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

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