2013-02-22 128 views
0

Innerchannel對象是否需要手動處理?WCF客戶端應該InnerChannel處理?

var client = new MyClient(); 
client.CallServer(); 
client.InnerChannel.Dispose() 
client.Close() 

or this enought?

var client = new MyClient(); 
client.CallServer(); 
client.Close() 

BaseClient<T>類實現了IDisposable - 但它確實如此明確

e.g:void IDisposable.Dispose()

這是否意味着我應該手動調用客戶端上Dispose()

我有點困惑 - 任何幫助表示讚賞

回答

0

沒有必要處置客戶的InnerChannel明確。當您在客戶端撥打Close時,它將關閉併爲您處置InnerChannel

您可以在您的客戶端上手動撥打Dispose,因爲它會調用客戶端的Close方法。 您需要做的唯一事情就是將您的客戶分配到IDisposable。否則,您無法直接在您的客戶端上調用Dispose。

或者你可以使用你的客戶端與使用語句

using (var client = new MyClient()) { 
    client.CallServer(); 
} 
+1

聽起來我的權利,但你有一些文件建立? – 2013-02-22 12:20:38

+0

@JensKloster檢查MSDN http://msdn.microsoft.com/en-us/library/ms576141.aspx作爲起點 – Jehof 2013-02-22 12:23:25

+0

我做了:) - 它不完全說。它不在'InnerChannel'屬性中提及,也不在'Close'或'Dispose'方法中提及。話雖如此 - 我仍然會接受你的伴侶。謝謝你,先生。 – 2013-02-22 12:32:54