2010-07-22 2 views
1

내 응용 프로그램에서는 client.open과 client.close를 사용하여 WCF 프록시 채널을 열고 wcf 메서드를 사용하고 마지막으로 닫습니다. Windows Forms 응용 프로그램의 일부입니다.WCF 클라이언트 사용

그러나 client.close가 연결을 즉시 닫지는 않는다는 것을 알고 있습니다. 왜 이런거야? 대신 client.Abort를 사용해야합니까?

저는 WCF 클라이언트를 올바르게 사용하고 있습니까? 즉 clien.open -> WCF 메소드 호출 -> client.close.

미리 도움 주셔서 감사합니다.

Subbu

답변

1

.Close() 방법은, 우아하게, 예를 들어를 연결을 닫으려고합니다 보류 중의 호출은 서버에 의해 종료 해, 완료 후에 만 ​​접속이 끊어집니다. 가능할 때마다 이것을 사용하십시오. 이는 클라이언트 연결을 부드럽고 선호하는 방법입니다.

.Abort()은 통화가 아직 진행 중인지 여부에 관계없이 통신 채널을 정말로 파괴합니다. .Close()이 실패하면 궁극의 최후의 수단으로 탈출 해치입니다.

try 
{ 
    myServiceClient.CallSomeMethod(); 
    myServiceClient.Close(); 
} 
catch(FaultException<SomeError>) 
{ 
    myServiceClient.Abort(); 
} 
// possibly other catch clauses, too - call .Abort() inside them 
catch(CommunicationException) 
{ 
    myServiceClient.Abort(); 
} 
+1

감사 :

는 가장 좋은 방법은, 내 서비스하는 try...catch 블록으로 같은 것을 호출 포장 것입니다. 이것은 나에게 좋은 지침을 준다. 나는 당신의 대답을 표시했다. – Subbu