在WCF服务上调用Close()之前,我应该检查是否已经关闭了吗?

时间:2009-02-27 14:25:58

标签: wcf

在我的WCF服务上调用Close()之前,我应该检查一下它是否已经关闭?

myWCFService.State != System.ServiceModel.CommunicationState.Closed

我的代码如下:

MyServiceClient myWCFClient = null;

try
{
  myWCFClient = new .....();
}
catch
{
}
finally
{
   myWCFClient.Close();
}

2 个答案:

答案 0 :(得分:2)

WCF客户端是一次性的,所以除了一些警告你可以使用using

using(MyClient client = new MyClient()) {
    client.DoStuff();
    // etc
}

但这有一个很大的问题; WCF客户端上的Dispose实际上是在出现故障时丢失(丢失原始异常)。有一个很好的解决方法,here,或者我已就此here发布了博客。

答案 1 :(得分:1)

看看这个问题:What is the best workaround for the WCF client using block issue?虽然不是一字不差地找到了什么,但我认为他的例子可以帮助你。