Size: a a a

var chat = new Chat();

2020 May 01

н

назови меня клоуном... in var chat = new Chat();
так а по какой причине это плохо...
источник

н

назови меня клоуном... in var chat = new Chat();
если это очень оптимизировано
источник

YN

Yurii Nskyi in var chat = new Chat();
назови меня клоуном
не очень тогда понимаю почему не сделать такую штуку типа делаем запрос к бд  в фоновом потоке и параллельно продолжаем основной пока не дойдем до момента пока нам не нужен будет респонс от бд(ну и потом если ответ все еще не получен можно подождать)
ещё раз - ты сделал запрос к БД
что твой поток будет делать пока ожидает ответа?
источник

VL

Vova Lantsov in var chat = new Chat();
назови меня клоуном
так а по какой причине это плохо...
Что именно плохо?
источник

н

назови меня клоуном... in var chat = new Chat();
Yurii Nskyi
ещё раз - ты сделал запрос к БД
что твой поток будет делать пока ожидает ответа?
какие-то штуки которые с конкретно этим запросом к бд не связаны
источник

н

назови меня клоуном... in var chat = new Chat();
тоесть не используется респонс
источник

н

назови меня клоуном... in var chat = new Chat();
Vova Lantsov
Что именно плохо?
ну говорят что без await'а плохо вызывать
источник

MK

Mykola Kotsabiuk in var chat = new Chat();
M@s0n C01em@n
на обычных смертных это не распространяется?
а то вижу что надо регестрироваться с помощью корпоративной почты
попробуй ввести свою почту як корпоративну або студентську якщо вона є)
источник

VL

Vova Lantsov in var chat = new Chat();
назови меня клоуном
ну говорят что без await'а плохо вызывать
Нет, если ты далее продолжаешь контроль переменной типа Task
источник

YN

Yurii Nskyi in var chat = new Chat();
назови меня клоуном
какие-то штуки которые с конкретно этим запросом к бд не связаны
так правильно, настоящая асинхронность запустится только с ключевым словом await, а до этого тебе вернёт Task - типа "эй, я тебе вернул задачу, ты в любой момент можешь подождать пока она закончится"
источник

VL

Vova Lantsov in var chat = new Chat();
назови меня клоуном
не очень тогда понимаю почему не сделать такую штуку типа делаем запрос к бд  в фоновом потоке и параллельно продолжаем основной пока не дойдем до момента пока нам не нужен будет респонс от бд(ну и потом если ответ все еще не получен можно подождать)
Task<List<Model>> requestToDb = _context.DbSet.Where(it => it.Name == "John").ToListAsync();
// Тут любая задача не связанная с запросом
// Тут ещё 1
List<Model> responseFromDb = await requestToDb;

Тут как раз происходит то, что ты описал
источник

н

назови меня клоуном... in var chat = new Chat();
Vova Lantsov
асинхронность тоже последовательная при классическом использовании, она просто позволяет освободить поток когда он не нужен
что значит освободить поток когда он не нужен
источник

н

назови меня клоуном... in var chat = new Chat();
Vova Lantsov
Task<List<Model>> requestToDb = _context.DbSet.Where(it => it.Name == "John").ToListAsync();
// Тут любая задача не связанная с запросом
// Тут ещё 1
List<Model> responseFromDb = await requestToDb;

Тут как раз происходит то, что ты описал
но тут же когда мы вызовем await requestToDb
источник

н

назови меня клоуном... in var chat = new Chat();
все равно последовательно будет
источник

н

назови меня клоуном... in var chat = new Chat();
выполнятся
источник

VL

Vova Lantsov in var chat = new Chat();
назови меня клоуном
но тут же когда мы вызовем await requestToDb
заметь, запрос в бд начинается не в момент вызова await
источник

VL

Vova Lantsov in var chat = new Chat();
await просто ожидает результат
источник

VL

Vova Lantsov in var chat = new Chat();
Запрос начнётся в момент вызова ToListAsync()
источник

YN

Yurii Nskyi in var chat = new Chat();
назови меня клоуном
но тут же когда мы вызовем await requestToDb
в этот момент ответ уже может быть готов! там даже шорткат к этому есть!
источник

н

назови меня клоуном... in var chat = new Chat();
запрос вообще начнется же
источник