2010-07-22 142 views
1

在我的應用程序中,我使用client.open和client.close來打開WCF代理通道,使用wcf方法並最終關閉它。我這樣做是我的Windows窗體應用程序的幾個部分。使用WCF客戶端

但是,我注意到client.close不一定立即關閉連接。爲什麼是這樣?我應該使用client.Abort嗎?

我是否正確地使用WCF客戶端?即clien.open - >調用WCF方法 - > client.close。

感謝您提前提供任何幫助!

Subbu

回答

1

.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