VS 2010 Beta Code Analysis建议我始终为LINQ to SQL部署WCF服务客户端和数据上下文。这是可取的吗?我认为这最终会发生。隐含或根本不这样做的利弊是什么?
答案 0 :(得分:2)
任何即IDisposable
,确保及时清理,关闭开放资源等(连接等)是您的工作。所以简而言之,是的。终结器仅在GC启动时发生,这可能需要很长时间 - 并且不允许最佳池化使用等。
但请注意,WCF具有躲闪Dispose()
实施的历史记录,使得只是 using
有点命中(您可能会失去实际的异常)。当然,也建议通过异步方法使用WCF,这再次使得using
难以使用;你经常需要保留一个引用并在IO回调中明确地调用Dispose()
。
重新评论你的意见;几个例子:
SqlConnection
:如果你把它留在(打开),你可以防止它重新使用池中的连接;你可以通过这种方式最终使可用的连接饱和,打破你的应用FileStream
的内容:您已阻止文件系统TransactionScope
而您导致db(etc)阻止