문제

나는 이것에 대한 설명을 얻으려고 노력했다.

Method-1:

Dim request = CreateRequest(uri) //some uri
Dim response = DirectCast(request.GetResponse, HttpWebResponse)
response.Close()

방법 -2 :

Dim request = Createrequest(uri)
Using response = DirectCast(request.GetResponse, HttpWebResponse)
End Using

로컬 컴퓨터에서 Method-1과 Method-2를 모두 사용하여 원격 기계 X로부터 연결하고 응답을 얻었을 때 둘 다 제대로 작동했습니다.

원격 기계 Y 에서이 코드를 사용하여 X로부터 응답을 얻었을 때 메소드 -1 만 작동하고 방법 -2의 경우

System.Net.WebException: The operation has timed out

위에서 언급 한 방법의 차이점과 가능한 문제는 무엇입니까?

도움이 되었습니까?

해결책

Using 단순히 a로 번역됩니다 Try/Finally 어떤 전화를 차단하십시오 .Dispose() 에서 Finally 차단하다. 당신이 사용할 수있는 반사기 생성 된 코드를 찾으려면 방법을 사용하여 방법이 무엇을하는지 살펴볼 수 있습니다. 이 경우 Dispose() 메소드 켜짐 HttpWebResponse 하다 ~ 아니다 똑같이하십시오 Close() 이는 실제로 여기서 의미 론적 차이가 있음을 의미합니다.

Using 일반적으로 객체가 범위를 벗어날 때 즉시 객체가 사용하는 리소스를 공개하는 이점이 있습니다. 이것은 GDI+ 또는 파일 핸들과 같은 것들에 유용하지만 HttpWebResponse 조금 다를 수 있습니다. 그 특정 대상에 대해 충분히 알지 못하는 것은 내 추측은 Close()실제로 자원을 공개하지 않으므로 필요하지 않습니다. Dispose() 전화 Close() 도. 그리고 그 행동에 대한 유효한 이유가있을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top