Я пытаюсь понять, как ждать работы async на С#, и одна вещь меня пугает. Я понимаю, что любой метод, использующий ключевое слово await, должен быть помечен async. Я понимаю, что когда строка с ключевым словом await попадает в код ниже, эта строка не выполняется. Операция async запускается для выполнения оператора в строке ожидания и элемент управления возвращается вызывающему методу, который может продолжить выполнение.
Вопрос № 1: Правильно ли это предположение или код ниже ключевого слова await все еще выполняется?
Во-вторых, предположим, что я вызвал метод async службы и должен вернуть его результат. Оператор return находится ниже ключевого слова ожидания.
Вопрос №2: Когда появляется ответ return, после завершения асинхронного вызова или до него?
Вопрос № 3: Я хочу использовать результат этого вызова службы, и операция async не поможет, потому что я хочу, чтобы вызывающий метод попадал, когда результат был возвращен. Я понимаю, что это можно сделать, используя свойство Result, которое вызывает синдром вызова. Но тогда использование асинхронных операций в DB приводит к тому, что они фактически занимают 80% времени в большинстве приложений.
Вопрос № 4: Как я могу использовать асинхронные операции с БД? Возможно ли и рекомендовано?
Вопрос № 5: В каких сценариях будут использоваться операции async, кажется, что каждый api просто делает асинхронные операции без причины? или мне не хватало смысла использовать async ops?
Что я имею в виду, говоря, что api делает asyn-методы без причины, потому что методы должны что-то возвращать и до тех пор, пока не будут сделаны эти вычисления, как они могут вернуться так, в сущности не будет ли этот вызов блокироваться в том смысле, что он будет быть бесполезным до тех пор, пока результат не будет возвращен?