2016-08-29 5 views
1

Я использую код от http://arcware.net/upload-and-download-files-with-web-api-and-azure-blob-storage/, чтобы загрузить blobs в лазурь. С помощью метода ExecutePostProcessingAsync() я хотел бы вызвать метод, который изменяет размеры изображений и использует асинхронный код.Как подождать метод async внутри 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(); 
      } 

Если я добавить асинхронный метод, как это: общественное переопределение асинхронной Task ExecutePostProcessingAsync()

5+ ошибок появится сообщение со справочными вопросами, а также с ошибкой:

«is async method, который возвращает« Задача », ключевое слово return не должно сопровождаться выражением объекта. Вы намеревались вернуть« Задача »?»

Вопросы:

Есть в любом случае ждать метод внутри этого метода? Любая помощь или ввод оценили, спасибо!

+0

'return await base.ExecutePostProcessingAsync();' –

ответ

1

Ключевое слово async позволяет использовать ключевое слово await. С учетом сказанного правильный синтаксис состоит в том, чтобы не возвращать Task, который представляет операцию, а просто await. Рассмотрим следующий пример:

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

Обратите внимание, как вместо того, чтобы пытаться вернуть Task, который представляет выполнение базовой, т.е. .; base.ExecutePostProcessingAsync() мы просто await вместо.

+0

Спасибо, попробовал, но я получаю те же сообщения об ошибках – mattias

+0

@mattias попробует обновленную версию. Нет причин возвращаться вообще, просто «жду». –

+0

Это трюк, спасибо большое! – mattias