在我的应用程序中,我发现有时 WCF 调用/通道的 Close() 会引发错误。我对这个主题做了一些研究,并在互联网上借了一些代码让我开始。
现在,我想知道这是正确的方法吗?或者我应该改进解决方案还是实施完全不同的东西?
通用类/静态类:
public class SafeProxy<Service> : IDisposable where Service : ICommunicationObject
{
private readonly Service _proxy;
public SafeProxy(Service s)
{
_proxy = s;
}
public Service Proxy
{
get { return _proxy; }
}
public void Dispose()
{
if (_proxy != null)
_proxy.SafeClose();
}
}
public static class Safeclose
{
public static void SafeClose(this ICommunicationObject proxy)
{
try
{
proxy.Close();
}
catch
{
proxy.Abort();
}
}
}
这就是我调用 WCF 的方式:
(WCFReference 是指向 WCF 服务地址的服务引用)
using (var Client = new SafeProxy<WCFReference.ServiceClient>(new WCFReference.ServiceClient()))
{
Client.Proxy.Operation(info);
}