Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос
Ад пуст, все бесы здесь.
Re: Когда происходит возврат из HttpClient.GetAsync(url).Result?
Здравствуйте, Codealot, Вы писали:
C>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос
Вообще-то ремарках написано. Все возвращает.
Надеюсь не надо напоминать, что если возможно, не использовать Result, а
var result = await HttpClient.GetAsync(url)
Re: Когда происходит возврат из HttpClient.GetAsync(url).Result?
Здравствуйте, Codealot, Вы писали:
C>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос
Ну по-хорошему, должен что-то возвращать, когда прочитаны только хидеры. А то вдруг у тебя там тело ответа — файл на 10 гигабайт, или бесконечный стрим. Ждать, пока ответ прочтется целиком, придется в этом случае долго.
Re: Когда происходит возврат из HttpClient.GetAsync(url).Result?
C>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос
GetAsync(requestUri) реализован через вызов другого метода
GetAsync(Uri requestUri, HttpCompletionOption completionOption) с defaultCompletionOption = HttpCompletionOption.ResponseContentRead
Т.е. по умолчанию будет читаться весь контент.
Re[2]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
Здравствуйте, Pzz, Вы писали:
C>>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос
Pzz>Ну по-хорошему, должен что-то возвращать, когда прочитаны только хидеры. А то вдруг у тебя там тело ответа — файл на 10 гигабайт, или бесконечный стрим. Ждать, пока ответ прочтется целиком, придется в этом случае долго.
Такого никто не видел — сначала выкачивает тело. Старый WebClient умеет только?
Re[2]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
Здравствуйте, Codealot, Вы писали:
MD>>Иначе есть хорошие шансы получить deadlock.
C>Почему?
Грубо говоря, код ждёт окончания работы таска, но для продолжения таска надо чтобы прокачался некий message loop, который обслуживает тот же самый тред, что ждёт сейчас окончания таска.
Здравствуйте, Mr.Delphist, Вы писали:
MD>Грубо говоря, код ждёт окончания работы таска, но для продолжения таска надо чтобы прокачался некий message loop, который обслуживает тот же самый тред, что ждёт сейчас окончания таска.
В общем случае да. А в данном конкретном?
Ад пуст, все бесы здесь.
Re[7]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
Здравствуйте, Codealot, Вы писали:
C>Здравствуйте, Mr.Delphist, Вы писали:
MD>>Грубо говоря, код ждёт окончания работы таска, но для продолжения таска надо чтобы прокачался некий message loop, который обслуживает тот же самый тред, что ждёт сейчас окончания таска.
C>В общем случае да. А в данном конкретном?
В том то и фикус, что мы не можем сказать, имея лишь одну строчку текста. В каком контексте она вызвана, как сконфигурены awaiters и т.п. И даже если сейчас она работает ок, то каждое изменение в коде имеет ненулевой риск. Оно нам надо жить на вулкане?
Re[8]: Когда происходит возврат из HttpClient.GetAsync(url).Result?
Здравствуйте, Mr.Delphist, Вы писали:
MD>В том то и фикус, что мы не можем сказать, имея лишь одну строчку текста. В каком контексте она вызвана, как сконфигурены awaiters и т.п. И даже если сейчас она работает ок, то каждое изменение в коде имеет ненулевой риск. Оно нам надо жить на вулкане?
То же самое можно сказать и для случая, когда .Result не используется.
Ад пуст, все бесы здесь.
Re: Когда происходит возврат из HttpClient.GetAsync(url).Result?
Здравствуйте, Codealot, Вы писали:
C>Когда response уже полностью прочитан, или когда прочитаны только хэдеры? А то документация что-то полностью обходит вниманием такой "несущественный" вопрос
HttpClient.GetStreamAsync — если нужно сразу начать читать, остальные методы синхронные.