Предположим, у меня есть метод, который имеет возвращаемый тип void
и что мне нужно await
по операции в этом методе.Зачем использовать метод void async для ожидания?
public void someOperation()
{
//dostuff
var res = await someOtherOperation();
//do some other stuff that needs res.
}
Когда я попытался скомпилировать этот код, я получил ошибку говоря someOperation
должен объявить async
. Я не понимаю, почему. Я понимаю, почему это было бы, если бы метод имел возвращаемое значение, но не здесь, когда он равен void
. или даже в том случае, когда ожидающая операция не влияет на возвращаемое значение метода.
Это предложение уже задан как часть вопроса this, но я не нашел ответ, который я искал. This guy просто упоминает:
Ключевое слово async позволяет использовать ключевое слово ожидания. Поэтому любой метод, использующий ожидание , должен быть помечен как асинхронный.
- Прежде всего, я не уверен, что это означает, что ключевое слово
async
позволяетawait
ключевое слово. - И, во-вторых, повторив мой вопрос, я не уверен, зачем это ?
1) Вы не можете использовать оператор 'await' в методе, который не объявлен' async'. Таким образом, он * допускает * оператор. 2) Я не уверен, что понимаю, в чем ваш вопрос: «Почему это требуется?» Это необходимо, потому что так работает работа. в чем именно проблема?: –
Я имею в виду, он должен быть там, чтобы соответствовать существующему дизайну? Дизайнеры не хотели делать исключение в этом случае? Потому что по тому, как я смотрю на него, это не требуется. Метод будет работать отлично, если вызывающий абонент не должен знать, что он «async». – atoMerz