Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Codealot Земля  
Дата: 20.03.20 23:20
Оценка:
Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос
Ад пуст, все бесы здесь.
Re: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Danchik Украина  
Дата: 21.03.20 11:06
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос


Вообще-то ремарках написано. Все возвращает.
Надеюсь не надо напоминать, что если возможно, не использовать Result, а
var result = await HttpClient.GetAsync(url)
Re: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Pzz Россия https://github.com/alexpevzner
Дата: 21.03.20 15:30
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос


Ну по-хорошему, должен что-то возвращать, когда прочитаны только хидеры. А то вдруг у тебя там тело ответа — файл на 10 гигабайт, или бесконечный стрим. Ждать, пока ответ прочтется целиком, придется в этом случае долго.
Re: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: RushDevion Россия  
Дата: 21.03.20 16:01
Оценка: 6 (1) +3
C>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос

GetAsync(requestUri) реализован через вызов другого метода
GetAsync(Uri requestUri, HttpCompletionOption completionOption) с defaultCompletionOption = HttpCompletionOption.ResponseContentRead
Т.е. по умолчанию будет читаться весь контент.
Re[2]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: VladCore  
Дата: 21.03.20 21:38
Оценка:
Здравствуйте, Pzz, Вы писали:

C>>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос


Pzz>Ну по-хорошему, должен что-то возвращать, когда прочитаны только хидеры. А то вдруг у тебя там тело ответа — файл на 10 гигабайт, или бесконечный стрим. Ждать, пока ответ прочтется целиком, придется в этом случае долго.


Такого никто не видел — сначала выкачивает тело. Старый WebClient умеет только?
Re[2]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Codealot Земля  
Дата: 23.03.20 20:23
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Надеюсь не надо напоминать, что если возможно, не использовать Result, а

D>
D>var result = await HttpClient.GetAsync(url)
D>


Это не работает, когда вызывающий метод — не async.
Ад пуст, все бесы здесь.
Re[3]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Mr.Delphist  
Дата: 01.04.20 16:20
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Здравствуйте, Danchik, Вы писали:


D>>Надеюсь не надо напоминать, что если возможно, не использовать Result, а

D>>
D>>var result = await HttpClient.GetAsync(url)
D>>


C>Это не работает, когда вызывающий метод — не async.


Сделать его таковым. Иначе есть хорошие шансы получить deadlock.
Re[4]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Codealot Земля  
Дата: 01.04.20 16:46
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Сделать его таковым.


А это просто не всегда возможно.

MD>Иначе есть хорошие шансы получить deadlock.


Почему?
Ад пуст, все бесы здесь.
Re[5]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Mr.Delphist  
Дата: 03.04.20 17:47
Оценка:
Здравствуйте, Codealot, Вы писали:

MD>>Иначе есть хорошие шансы получить deadlock.


C>Почему?


Грубо говоря, код ждёт окончания работы таска, но для продолжения таска надо чтобы прокачался некий message loop, который обслуживает тот же самый тред, что ждёт сейчас окончания таска.

https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html
https://docs.microsoft.com/en-us/archive/msdn-magazine/2013/march/async-await-best-practices-in-asynchronous-programming
Re[6]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Codealot Земля  
Дата: 04.04.20 02:36
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Грубо говоря, код ждёт окончания работы таска, но для продолжения таска надо чтобы прокачался некий message loop, который обслуживает тот же самый тред, что ждёт сейчас окончания таска.


В общем случае да. А в данном конкретном?
Ад пуст, все бесы здесь.
Re[7]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Mr.Delphist  
Дата: 06.04.20 08:31
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Здравствуйте, Mr.Delphist, Вы писали:


MD>>Грубо говоря, код ждёт окончания работы таска, но для продолжения таска надо чтобы прокачался некий message loop, который обслуживает тот же самый тред, что ждёт сейчас окончания таска.


C>В общем случае да. А в данном конкретном?


В том то и фикус, что мы не можем сказать, имея лишь одну строчку текста. В каком контексте она вызвана, как сконфигурены awaiters и т.п. И даже если сейчас она работает ок, то каждое изменение в коде имеет ненулевой риск. Оно нам надо жить на вулкане?
Re[8]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: Codealot Земля  
Дата: 06.04.20 16:11
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>В том то и фикус, что мы не можем сказать, имея лишь одну строчку текста. В каком контексте она вызвана, как сконфигурены awaiters и т.п. И даже если сейчас она работает ок, то каждое изменение в коде имеет ненулевой риск. Оно нам надо жить на вулкане?


То же самое можно сказать и для случая, когда .Result не используется.
Ад пуст, все бесы здесь.
Re: Когда происходит возврат из HttpClient.GetAsync(url).Result?
От: varenikAA  
Дата: 14.04.20 07:40
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос


HttpClient.GetStreamAsync — если нужно сразу начать читать, остальные методы синхронные.
☭ ✊ В мире нет ничего, кроме движущейся материи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.