我见过一个预先存在的代码,它使用自动生成的客户端来访问WCF。原始版本,如自动生成页面上所示,如下所示。
public int GetNumber()
{
ServiceClient client = new ServiceClient();
int number = client.GetNumber();
client.Close();
return number;
}
它被重构为以下内容。
public int GetNumber()
{
ServiceClient client = new ServiceClient();
return number.GetNumber();
}
我不确定是否保证客户端将被关闭(通过GC或任何其他东西)。我或者应该建议添加两行代码吗?
答案 0 :(得分:1)
您需要调用Close
方法。或者使用以下代码段,该代码段在client
块退出时废弃using
对象
using(ServiceClient client = new ServiceClient())
{
return number.GetNumber();
}
答案 1 :(得分:1)
根据我的理解,你是正确的,.Close()
可以省略
只要存在不完整的异步任务,就不会通过调用.Close()
而不是通过超出范围的客户端对象来处理客户端。 WCF服务的using
声明似乎是不明智的,因为下面评论中约翰的(伟大)链接表明了这一点。