저는 Intro to .NET 웹 서비스 과정을 밟고 있으며, 우리가 현재 배우고있는 것 중 하나는 IDisposable 인터페이스입니다. 비교적 간단한 예로서, MyMethod()
조작으로 서비스 (서버/클라이언트)를 작성했습니다. 이 메서드는 호출 될 때 간단히 trace 문을 인쇄합니다. 또한 서버 구현 된 버전에서 간단한 WriteLine 추적을 사용하여 Dispose()
메서드를 구현하여 내 서버에 IDisposable을 구현했습니다.서비스를 호출하지 않은 경우에도 내 서비스의 Dispose() 메서드가 호출되는 이유는 무엇입니까? (BasicHttpBinding 사용)
내 클라이언트에서는 ChannelFactory로 두 개의 프록시를 만듭니다. proxy1에 나는 MyMethod()
동작을 3 회 호출 한 후 폐기 proxy1에 대한 코드의 몇 라인을 가지고 :
var castedProxy = (IDisposable)proxy1;
castedProxy.Dispose();
PROXY2에, 나는 다시 내가 캐스팅 Dispose()
를 호출하지 않는이 시간을 제외하고는 MyMethod()
동작을 3 회 호출 . 나는 서버/클라이언트를 실행하면, 내가 얻을 같은 흔적 6 회 :
서버의 추적 + CurrentThread ID
MyMethod라는()의 추적 + CurrentThread ID
폐기()의 추적 + CurrentThread ID
제 질문은 이것입니다 : 왜 내가 처음에만 3 개의 트레이스를 사용 하긴하지만, 항상 Dispose()
부분의 트레이스가 발생합니까? 내 생각 엔, BasicHttpBinding을 사용할 때 세션 관리 자체가 없으므로 이전 Dispose() 호출을 인쇄하면서 이전 리소스가 그대로 남아 있다는 사실과 관련이 있다는 것입니다.
미리 알려 주시면 감사하겠습니다. :)
귀하의 신속하고 통찰력있는 답변에 감사드립니다. 확실히 제 질문에 100 % 대답했습니다. : D –
당신은 오신 것을 환영합니다 크리스 :) –