연습 :WCF 폐쇄 최고의 내가 WCF 프록시를 사용하기위한 가장 좋은 방법은 될 것이라고 읽을
YourClientProxy clientProxy = new YourClientProxy();
try
{
.. use your service
clientProxy.Close();
}
catch(FaultException)
{
clientProxy.Abort();
}
catch(CommunicationException)
{
clientProxy.Abort();
}
catch (TimeoutException)
{
clientProxy.Abort();
}
내 문제는 내가 프록시를 할당 한 후, 나는 그것에 이벤트 처리기를 할당하고도를 사용하여 다른 방법을 초기화한다 프록시 :
public void InitProxy()
{
sdksvc = new SdkServiceClient();
sdksvc.InitClusteringObjectCompleted += new EventHandler<InitClusteringObjectCompletedEventArgs>(sdksvc_InitClusteringObjectCompleted);
sdksvc.InitClusteringObjectAsync(Utils.DSN, Utils.USER,Utils.PASSWORD);
sdksvc.DoClusteringCompleted += new EventHandler<DoClusteringCompletedEventArgs>(sdksvc_DoClusteringCompleted);
sdksvc.CreateTablesCompleted += new EventHandler<CreateTablesCompletedEventArgs>(sdksvc_CreateTablesCompleted);
}
내가 지금 InitProxy() 메소드에게 내가 모범 사례에서 알 수 있듯이를 사용하려면 내가 프록시를 사용할 때마다 호출해야합니다.
이것을 피하는 방법에 대한 아이디어가 있으십니까?
WCF 서비스를 호출 할 때마다 .Close()를 호출 할 필요가 없습니다. 오류가없는 한 다른 호출을 위해 해당 프록시를 다시 사용할 수 있습니다. 이 모범 사례에 대한 요점은 WCF 프록시 호출을'using (....) {....}'블록에 두지 말아야한다는 것입니다. 왜냐하면 그 블록은 닫는'}'에 프록시를 처리하고 닫는 것이기 때문에 WCF 프록시는 using 블록과 함께 주목되지 않는 예외를 유발할 수 있습니다. –
가능한 복제본은 무엇입니까 [WCF 클라이언트 \ 사용 중 가장 좋은 해결 방법은 \'블록 문제를 사용합니까?] (http://stackoverflow.com/questions/573872/what-is-the-best-workaround-for-the- wcf-client-using-block-issue) –