积极答复者
WCF之后产生的client类,调用完毕是不是最好使用close关闭呢

问题
-
问题来自:http://www.cnblogs.com/frank_xl/archive/2009/03/16/1411751.html#commentform
WCF之后产生的client类,调用完毕是不是最好使用close关闭呢
Frank Xu Lei--谦卑若愚,好学若饥
专注于.NET平台下分布式应用系统开发和企业应用系统集成
Focus on Distributed Applications Development and EAI based on .NET
欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
答案
-
是的。及时释放资源,这里最重要的就是网络连接,属于非托管资源。调用close方法会释放client对象使用的这些资源。这个非常重要。
Frank Xu Lei--谦卑若愚,好学若饥
专注于.NET平台下分布式应用系统开发和企业应用系统集成
Focus on Distributed Applications Development and EAI based on .NET
欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum- 已标记为答案 Frank Xu LeiModerator 2010年2月2日 4:39
全部回复
-
是的。及时释放资源,这里最重要的就是网络连接,属于非托管资源。调用close方法会释放client对象使用的这些资源。这个非常重要。
Frank Xu Lei--谦卑若愚,好学若饥
专注于.NET平台下分布式应用系统开发和企业应用系统集成
Focus on Distributed Applications Development and EAI based on .NET
欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum- 已标记为答案 Frank Xu LeiModerator 2010年2月2日 4:39
-
不能使用Using来释放资源,比如下面的代码:
using (CalculatorClient client = new CalculatorClient()) { ... } // <-- this line might throw Console.WriteLine("Hope this code wasn't important, because it might not happen.");
推荐这个方式
//Create channel from factory
ChannelFactory channel =
new ChannelFactory<IService1>("bindingName");
IService1 client = channel.CreateChannel();
client.DoWork();
//Done with the service, let's close it.
try
{
if (client.State != System.ServiceModel.CommunicationState.Faulted)
{
client.Close();
}
}
catch (Exception ex)
{
client.Abort();
}
Frank Xu Lei--谦卑若愚,好学若饥
专注于.NET平台下分布式应用系统开发和企业应用系统集成
Focus on Distributed Applications Development and EAI based on .NET
【老徐的网站】:http://www.frankxulei.com/