2014-02-06 4 views
0

У меня возникли проблемы с использованием класса StreamWriter. У меня есть около 10 объектов, которые мне нужно отправить, но только пара за раз. Однако, после 2-х сообщений, третий не проходит и не уходит. Я понимаю, что это связано с тем, что максимальные соединения, которые у вас есть, - это 2. Однако я смущен тем, почему меня останавливают после 2, так как я (думаю) закрываю соединение StreamWriter. Вот мой код:StreamWriter не закрывается правильно?

var httpWebRequest = (HttpWebRequest)WebRequest.Create("my url"); 
httpWebRequest.ContentType = "text/json"; 
httpWebRequest.Method = "POST"; 
//var data = json data 

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
    streamWriter.Write(data); 
    streamWriter.Close(); 
} 

Я думал, используя оператор будет закрыть его автоматически, но это не так, поэтому я добавил Закрыть() линии. Однако, похоже, это ничего не делало. Отладчик застревает на используемой линии с третьей попытки. Если я установлюServicePointManager.DefaultConnectionLimit на что-то вроде 10, все работает, но я смущен, почему то, что я написал, не делает. Любая помощь будет оценена!

ответ

1

Я подозреваю, что более вероятно, что это связано с тем, что вы делаете с ответом .

Оператор using закроет StreamWriter, и вам даже не понадобится явный вызов Close. Тем не менее, вы также нужны using заявления для ответа:

using (var response = httpWebRequest.GetResponse()) 
{ 
    ... 
} 

Если у вас нет , что, пул соединений для конкретного хоста будет забиваться соединениями из-за незакрытой ответ.

+0

Я даже не осознавал этого! Я все еще новичок в этом. Спасибо, куча, сейчас работает! – tjboswell

Смежные вопросы