2013-02-22 125 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