快速提问,但最好将服务代理类包装在using语句中吗?意思是,在VS中,我们为WCF服务生成了一个代理。对于服务类,是否应该使用?我不相信它实现了IDisposable并且没有Dispose()方法。感谢。
答案 0 :(得分:4)
虽然服务参考和svcutil.exe 生成的代理实现了IDisposable
,但通常不是将它们包装在{{}中的最佳做法1}}阻止;而是赞成明确的开放和结束。
为什么呢?好吧,问题是using
方法调用Dispose
,可以在各种情况下抛出,如果频道处于故障状态,则最突出。一般来说这很糟糕,但是如果在finally块期间发生这种情况,因为你让故障异常冒出来,它可能会吞下原始故障异常而支持Close
异常,从而有效地丢失了原始异常。