Из-за ключевого слова async
подпись ваших методов, как "видимая компилятором", в области действия методов преобразуется:
protected async Task Foo()
станет
protected void Foo();
Чтобы вернуть значение с ключевым словом async
, вы должны использовать эту подпись:
protected async Task<T> Foo()
, что приводит к
protected T Foo()
Что касается вызывающей стороны, подпись остается той же.
Вкл. Task
, Result
не определено, поскольку по своей природе не имеет возвращаемого значения из задачи.A Task<T>
с другой стороны имеет a Result
.
Итак, чтобы получить «результат», (Result
не определено для Task
(Wait
is), вы должны использовать Task<T>
, для которого определено Result
.
В вашем случае вы должны изменить подпись на:
protected async System.Threading.Tasks.Task<WhatEverTypeYouAreReturning> curlRequestAsync()
Теперь вы сможетеполучите вызов Result
или await
, если вы находитесь в асинхронной области. Последний вариант предпочтителен, поскольку он сохранит ваш метод асинхронным, что имеет некоторые преимущества в отношении использования ресурсов.