none
WCF之后产生的client类,调用完毕是不是最好使用close关闭呢 RRS feed

答案

全部回复

  • 是的。及时释放资源,这里最重要的就是网络连接,属于非托管资源。调用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
    2010年1月31日 3:40
    版主
  • 不能使用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/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年1月20日 6:24
    版主