使用WCF客户端

问题描述:

在我的应用程序中,我使用client.open和client.close来打开WCF代理通道,使用wcf方法并最终关闭它。我这样做是我的Windows窗体应用程序的几个部分。使用WCF客户端

但是,我注意到client.close不一定立即关闭连接。为什么是这样?我应该使用client.Abort吗?

我是否正确地使用WCF客户端?即clien.open - >调用WCF方法 - > client.close。

感谢您提前提供任何帮助!

Subbu

.Close()方法将尝试正常关闭的连接,例如挂起的呼叫仍将由服务器完成,并且只有在完成后,连接才会终止。尽可能地使用它 - 这是关闭客户端连接的温和且首选的方式。

.Abort()真的只是撕下了沟通渠道 - 无论是否还在进行通话。如果.Close()失败,这是最后的,最后的手段逃生孵化。

作为最佳实践,我想包我的服务电话为try...catch块,这样的事情:

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

感谢。这给了我很好的指导。我已经标记了你的答案 – Subbu 2010-07-23 16:52:55