У меня есть сообщение формы, которое должно вызывать действие асинхронно.
Я думаю, вы не понимаете, что означает «асинхронный» в этом контексте. Использование действий контроллера async
(или обработчиков HTTP-запросов вообще) означает, что веб-сервер может вызывать операции асинхронно и не удерживать поток в состоянии ожидания во время выполнения операции. Это позволяет веб-серверу более эффективно обрабатывать более параллельные запросы.
Браузер, однако является ждет ответа. Асинхронный характер любой данной операции обычно не определяется самой операцией, а тем, что вызывает ее. (Например, обратите внимание, как в этой операции ожидается ожидание еще одной асинхронной операции. Если этот код не ожидал этого, поведение было бы совсем другим. Но вызываемый метод не изменился бы между этими двумя сценариями.)
Это имеет смысл. В конце концов, что будет делать браузер, если он не дожидается ответа с сервера? Показать пустую страницу?
Вы можете сделать асинхронные вызовы на веб-сервер из клиентского кода с помощью AJAX. Это позволит странице вызывать операцию на стороне сервера и прослушивать ответ без блокировки или изменения контекста самой страницы. Но если весь контекст страницы отправляется на сервер и ожидает загрузки новой страницы, ему необходимо, чтобы получил, что новая страница, прежде чем она сможет ее отобразить.
Как это называется синхронно? Что-то ждало * это? (Обратите внимание, что ожидаемый единственный асинхронный вызов, вызываемый в этом коде, ожидается, поэтому выполнение внутри этого метода прекратится до тех пор, пока эта операция не завершится. Какой смысл имеет смысл, учитывая, что следующая строка основывается на результате этого вызова .) – David
Действие следует вызвать асинхронно. то есть пользовательский интерфейс должен быть бесплатным для других вещей, которые в настоящее время не происходят. – nnm
Вы вызываете этот метод как 'await SaveW2Document()'? – dymanoid