문제

나는 an로부터 응답을 받고있다 httpwebrequest (수정 된 버전 사용 Jeff Richter의 CCR 포장지), 그런 다음 다운로드를 계속할지 여부를 결정하기 위해 헤더 중 일부를 검사합니다. 때로는 계속하고 싶지 않을 수도 있으므로 결과적으로 발행합니다. 응답 그리고 request.abort. 문제가 필요합니까? getReponseStream 그런 다음 스트림을 닫거나 전화를 걸 때 암시 적입니다. 응답?

getResponse를 발행 한 후 문서 상태:

스트림을 닫고 연결을 해제하려면 가까운 방법을 호출해야합니다. 그렇게하지 않으면 응용 프로그램이 연결이 부족할 수 있습니다.

그렇다면 이것은 우리가 일단 응답이 있으면 스트림을 얻고 닫는 것이 의무적이라는 것을 의미합니까?

우리는 매달린 다운로드가 결국 시스템을 늪에 빠뜨리는 상당히 이상한 문제를보고 있습니다. 이것은 자원 유출의 가장 강력한 후보 인 것처럼 보이지만 다른 사람 이이 문제에 대한 경험이 있는지 궁금합니다.

따로 : 같은 스트림이라는 가정에서 두 번 getResponsEStream이 안전합니까?

도움이 되었습니까?

해결책

실제로 Webresponse.close ()에 대한 호출은 응답 스트림을 닫습니다.

응답은 idisposable입니다. 나는 당신에게 진술을 사용하는 것을 조언합니다.

다른 팁

부름 httpwebresponse.close 암시성은 응답 스트림을 닫습니다.

문서에서 :

닫기 메소드는 응답 스트림을 닫고 다른 요청에 의한 재사용을 위해 리소스에 대한 연결을 출시합니다.

스트림을 닫고 재사용을 위해 연결을 해제하려면 stream.close 또는 httpwebresponse.close 메소드를 호출해야합니다. stream.close 및 httpwebrepresponse.close를 모두 호출 할 필요는 없지만 그렇게하면 오류가 발생하지 않습니다. 스트림을 닫지 않으면 응용 프로그램이 연결이 부족할 수 있습니다.

그리고 당신의 이중 대응 정류 문제에 대해서도 선적 서류 비치 명시 적으로 언급하지 않으며, 몇 번이나 호출하더라도 항상 동일한 스트림 객체를 반환합니다.

같은 일을하십시오 WCF 연결

//Done with the service, let's close it.
try
{
   if (client.State != System.ServiceModel.CommunicationState.Faulted)
   {
      client.Close();
   }
}
catch (Exception ex)
{
   client.Abort();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top