powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Используете ли вы tag-helpers или htm-helpers или html elements?
25 сообщений из 54, страница 2 из 3
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945228
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
listtoview
а вот еще вопрос, что если асинхронный метод, скажем через пол минуты ожидания выбросит исключение
до клиента дойдет?

Код: c#
1.
2.
3.
4.
5.
6.
7.
[HttpPost]
public async Task<IActionResult> Create(User user)
{
    db.Users.Add(user);
    await db.SaveChangesAsync();
    return RedirectToAction("Index");
}



С точки зрения клиента не имеет значения асинхронный метод или синхронный. Результат будет одинаковый.

а кто делает Task.Wait()?
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945250
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Инфраструктура.
Если очень интересно - все исходники ASP.NET Core доступны.

(Task.Wait(), конечно, вряд ли там есть ))
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945330
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
а кто делает Task.Wait()?


При чём тут Task.Wait()?
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945340
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
listtoview
а кто делает Task.Wait()?


При чём тут Task.Wait()?

ну если экшен ждет результата асинхронного метода
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945344
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается именно в этом случае от await вообще никакого толку
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945353
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
получается именно в этом случае от await вообще никакого толку


А какой толк вы ожидали? )
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945354
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
получается именно в этом случае от await вообще никакого толку
я же писал выше. Если тебе не нужен результат выполнения SaveChangesAsync (в том числе возможное исключение), то можешь его убрать. Но это странно.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945356
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
ну если экшен ждет результата асинхронного метода

Экшен ничего не ждет, он точно так же сразу возвращает, как уже сказали, в инфраструктуру свой Task, а инфраструктура уже "делает Wait". А вообще при работе с тасками про существование Task.Wait() и Task.Result лучше вообще забыть, если не хочешь потом каких-нибудь адовых проблем, источник которых будет очень-очень тяжело найти.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945392
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
listtoview
ну если экшен ждет результата асинхронного метода

Экшен ничего не ждет, он точно так же сразу возвращает, как уже сказали, в инфраструктуру свой Task, а инфраструктура уже "делает Wait". А вообще при работе с тасками про существование Task.Wait() и Task.Result лучше вообще забыть, если не хочешь потом каких-нибудь адовых проблем, источник которых будет очень-очень тяжело найти.

писали наоборот как раз что будет ждать

так будет ждать или не будет выполнения асинхронной операции записи в базу?
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945407
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
писали наоборот как раз что будет ждать
так будет ждать или не будет выполнения асинхронной операции записи в базу?

Блин, да почитай ты книжку какую-нибудь что ли, хотя бы вот эту . А вообще, в случае асинхронных MVC контроллеров, можешь даже и не заморачиваться - тупо делаешь экшен async, и на все, что внутри него возвращает Task, делаешь await, и будет тебе счастье.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945447
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
писали наоборот как раз что будет ждать

так будет ждать или не будет выполнения асинхронной операции записи в базу?
Тебе бы разобраться в том, как работает Task/await для начала, тогда и вопросов таких не будет. Это вопрос не по MVC.

Все, что для тебя сейчас нужно знать, это то, что клиент получит ответ тогда, когда закончится экшен на сервере, неважно, будет он синхронный или асинхронный.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945448
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
listtoview
писали наоборот как раз что будет ждать

так будет ждать или не будет выполнения асинхронной операции записи в базу?
Тебе бы разобраться в том, как работает Task/await для начала, тогда и вопросов таких не будет. Это вопрос не по MVC.

Все, что для тебя сейчас нужно знать, это то, что клиент получит ответ тогда, когда закончится экшен на сервере, неважно, будет он синхронный или асинхронный.

тогда какой смысл в этом await?
конкретно в этом примере
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945450
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
тогда какой смысл в этом await?
конкретно в этом примере
А как бы ты хотел вызывать асинхронный метод? Через Wait()? Не надо так делать.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945518
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
тогда какой смысл в этом await?
конкретно в этом примере

В случае асп.нет смысл в более эффективном использовании пула потоков при большом кол-ве одновременных запросов. Но если у тебя только один пользователь, то разницы никакой :))
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945552
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
В случае асп.нет смысл в более эффективном использовании пула потоков при большом кол-ве одновременных запросов. Но если у тебя только один пользователь, то разницы никакой :))
Разницы с чем? Он же не приводил вроде альтернативный код
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945564
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
fkthat
В случае асп.нет смысл в более эффективном использовании пула потоков при большом кол-ве одновременных запросов. Но если у тебя только один пользователь, то разницы никакой :))
Разницы с чем? Он же не приводил вроде альтернативный код

Разницы между асинхронным action и неасинхронным.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945569
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС задал вопрос
listtoview
тогда какой смысл в этом await?
ты ответил
fkthat
В случае асп.нет смысл в более эффективном использовании пула потоков при большом кол-ве одновременных запросов. Но если у тебя только один пользователь, то разницы никакой :))
причем тут синхронный или асинхронный экшен?
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945574
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
причем тут синхронный или асинхронный экшен?

Ну как при чем. Может я, просто не совсем понятно выразился.

Случай 1:
Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public void Update()
{
    _dbContext.SaveChanges();
}


Поток выполняющий этот код на вызове SaveChanges() будет заблокирован и будет ждать пока этот вызов не вернет управление.

Случай 2:
Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public async Task Update()
{
    await _dbContext.SaveChangesAsync();
}


Поток "наткнувшись" на асинхронное обращение к БД вернется в пул потоков и может быть взят для обработки другого запроса. Когда SaveChangesAsync() сделает свою работу, то из пула будет взят другой поток (если есть незанятый) и код, который идет вслед за SaveChangesAsync() будет выполняться уже в нем. Когда сервер нагружается параллельными запросами, то профит очевиден.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945586
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это понятно. Но ТС спрашивал, нафига ему await
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945626
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
я же писал выше. Если тебе не нужен результат выполнения SaveChangesAsync (в том числе возможное исключение), то можешь его убрать. Но это странно.


Не, я бы не рекомендовал убирать await. Не нужен результат, нужно переносить задачу в IHostedService.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945627
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Боюсь, слово async ещё многих будет вводить в заблуждение :)
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945632
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Shocker.Pro
я же писал выше. Если тебе не нужен результат выполнения SaveChangesAsync (в том числе возможное исключение), то можешь его убрать. Но это странно.


Не, я бы не рекомендовал убирать await. Не нужен результат, нужно переносить задачу в IHostedService.

У меня сильное подозрение, что исключение в таком случае вообще обрушит весь процесс.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945635
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
У меня сильное подозрение, что исключение в таком случае вообще обрушит весь процесс.


Не обрушит, контекста синхронизации же нет.
В общем, так лучше никогда не делать :)
Async-методы нужно эвейтить, либо по одиночке, либо пачкой.
Фоновые задачи должны запускаться в контексте фоновых задач.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945644
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Не обрушит, контекста синхронизации же нет.

Да, я уже понял, что тупняк написал. Таск просто пометится как failed, а поскольку таск где-то уже затерян, то ничего и не будет.

hVostt
Async-методы нужно эвейтить, либо по одиночке, либо пачкой.

Да, вот, кстати, про возможность "пачки" await Task.WhenAll(....) частенько забывают - сам иногда себя на этом ловлю.
...
Рейтинг: 0 / 0
Используете ли вы tag-helpers или htm-helpers или html elements?
    #39945695
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Shocker.Pro
причем тут синхронный или асинхронный экшен?

Ну как при чем. Может я, просто не совсем понятно выразился.

Случай 1:
Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public void Update()
{
    _dbContext.SaveChanges();
}


Поток выполняющий этот код на вызове SaveChanges() будет заблокирован и будет ждать пока этот вызов не вернет управление.

Случай 2:
Код: c#
1.
2.
3.
4.
5.
[HttpPost]
public async Task Update()
{
    await _dbContext.SaveChangesAsync();
}


Поток "наткнувшись" на асинхронное обращение к БД вернется в пул потоков и может быть взят для обработки другого запроса. Когда SaveChangesAsync() сделает свою работу, то из пула будет взят другой поток (если есть незанятый) и код, который идет вслед за SaveChangesAsync() будет выполняться уже в нем. Когда сервер нагружается параллельными запросами, то профит очевиден.

спасибо за подробный комментарий
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Используете ли вы tag-helpers или htm-helpers или html elements?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]