직장에서 IDisposable을 구현하고 System.ServiceModel.ClientBase에서 파생 된 ServiceAgent가있는 WCF Services를 관리하는 도우미 클래스를 찾았습니다. Dispose() 메서드는 열려있는 모든 WCF 서비스를 닫습니다. 헬퍼는 ServiceAgent의 메소드에 호출을 래핑하는 메소드를 노출합니다. 각 방법은 그 패턴을 기반으로합니다 :IDisposable 및 WCF
public void WCFMethod1()
{
using(this)
{
this.ServiceAgent.WCFMethod1();
}
}
public override void Dispose()
{
try
{
this.ServiceAgent.Close();
}
catch
{
this.ServiceAgent.Abort();
}
finally
{
this.ServiceAgent = null;
}
}
여기에 질문이 있습니다. (이) 좋은 연습을 사용하는 것입니까?
WCF의 버그/코드에 대한 해결 방법입니다. http://geekswithblogs.net/bcaraway/archive/2008/07/06/123622.aspx – Rohit
아니요 해결 방법이 없습니다. * Dispose() *는 "* WCFMethod *"클래스를 정리하고 서비스를 닫지 않아야합니다. 안드레이 (Andrey)와 파벨 (Pavel)은 이런 방식이 혼란 스럽다고 말합니다. "* Dispose() *"가 호출되면이 객체를 더 이상 사용하지 않을 것입니다. 폐기 될 예정이므로 정의에 따라 GC에 의해 언제든지 정리할 수 있습니다. –