2014-02-06 2 views
0

StreamWriter 클래스를 올바르게 사용하는 데 문제가 있습니다. 나는 게시 할 필요가있는 약 10 개의 개체를 가지고 있지만, 한 번에 한 두 개의 개체 만 있습니다. 그러나, 2 개의 게시물 이후, 세 번째는 통과하지 않고 시간을 초과합니다. 나는 이것이 당신이 가질 수있는 최대 연결이 2이기 때문에 실현합니다. 그러나 나는 StreamWriter 연결을 닫을 때부터 (생각한 후) 왜 2시에 멈추는 지 혼란 스럽습니다. 여기 내 코드는 다음과 같습니다.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(); 
} 

사용하는 문이 자동으로 닫히지 만 생각하지 않았으므로 Close() 줄을 추가했습니다. 그러나 이것은 아무것도하지 않는 것 같습니다. 디버거는 세 번째 시도에서 사용하는 줄에 붙어 있습니다. setServicePointManager.DefaultConnectionLimit을 10과 같이 설정하면 모든 것이 작동하지만 필자가 작성한 이유가 무엇인지 혼란 스럽습니다. 어떤 도움을 주시면 감사하겠습니다!

답변

1

나는 그것이 응답으로하는 일과 관련이 있다고 생각합니다.

using 문은 StreamWriter을 닫을 것이고 명시적인 Close 호출이 필요하지 않습니다. 그러나 는 응답에 대한 using 문을 필요

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

당신이 특정 호스트에 대한 연결 풀 닫히지 않은 반응에 의한 연결로 막혀됩니다 것을이없는 경우.

+0

나는 심지어 그것을 몰랐다! 나는 아직도 이것에 초보 다. 고마워, 지금은 작동! – tjboswell

관련 문제