#c# #.net #httpwebrequest #httpwebresponse
#c# #.net #httpwebrequest #httpwebresponse
Вопрос:
Я работаю над менеджером загрузок на C #, использую несколько http-запросов, и мне было интересно, как можно убедиться, что соединение правильно закрыто?
Достаточно ли вызвать Dispose в потоке ответов? Нужно ли мне также вызывать Close? Не уверен, что что-то может пойти не так, но в какой-то момент веб-сайт перестанет отвечать.
Спасибо!
Ответ №1:
Оберните свой HttpWebResponse
в блок using:
using(HttpWebResponse response = request.GetResponse())
{
// do stuff here
} // response object is automatically disposed of here.
Комментарии:
1. Я знаком с инструкцией using, но я уже вызываю Dispose () после того, как я закончил, есть ли в этом какая-то разница?
2. Когда вы используете
using
подобным образом, вам не нужно беспокоиться о вызовеDispose
самостоятельно, компилятор позаботится об этом за вас.
Ответ №2:
Как упоминал Кайл, оберните ваш HttpWebResponse в блок using . Но если GetResponse() выдает исключение (что происходит, например, при ответе 404), вам нужно захватить HttpWebResponse в исключении.
HttpWebResponse webResponse = null;
try {
webResponse = (HttpWebResponse)webRequest.GetResponse();
} catch (WebException e) {
webResponse = (HttpWebResponse)e.Response;
if (webResponse == null) {
// Handle this.
}
}
using (webResponse) {
// Process the response.
}