2010-03-23 4 views
2

저는 WCF 서비스에서 작동하는 Silverlight 응용 프로그램을 만들고 있습니다. 브라우저에서 서비스 메타 데이터를로드하는 동안, 내가 다음 코드를 제공하는 것으로 나타났습니다 :Silverlight - 서비스 닫기

class Test 
{ 
    static void Main() 
    { 
     myServiceClient client = new myServiceClient(); 

     // Use the 'client' variable to call operations on the service. 

     // Always close the client. 
     client.Close(); 
    } 
} 

마지막 줄은 "항상 고객을 닫습니다"라고. 제 질문은, 언제 Silverlight 응용 프로그램에서 클라이언트를 닫아야합니까? "[MyServiceOperation] Async"호출 후 닫아야합니까, 아니면 "[MyServiceOperation] Completed"이벤트 핸들러에서 닫아야합니까? 비동기 시나리오에서 사용하는 경우

답변

2

Close 블록을 주셔서 감사합니다. 당신이 당신의 호출 코드 차단하지 않으려면

또한 코드의 BeginClose/EndClose 비동기 변형이 있지만, 미결제 통화 .Close 반환되기 전에 해결 될 때까지 당신이 .Close를 호출하는 경우 내가 무엇을 볼 수에서 대기합니다.

은 또한 당신의 완료 핸들러를 호출하면 동일한 클라이언트 객체에 여러 비동기 호출에 문제가 발생할 수 있습니다 ... 나는 업데이트 중 .Close 또는 .BeginClose

와 호출 코드에 그 일을하는 것이 좋습니다 것입니다 : From the documentation를 (다소)에 묻혀 있지만

이 방법은 개방 상태에서 폐쇄 상태로 우아하게 전환에 ICommunicationObject됩니다. 닫기 메서드 을 사용하면 완료되기 전에 완료되지 않은 작업을 으로 완료 할 수 있습니다. ( 예를 들어, 버퍼 된 메시지를 보내는 완료.)

...

닫기 수익을 폐쇄 상태에 도달 한 후.