想象一下,你正在写一个图书馆。比如说,这个库将用于24/7服务器应用程序。有一些无人值守的资源,包含在您的公共API中,因此您实现了Disposable模式(您甚至可以实现终结器)
通常,您将使用using
语句释放非托管资源。但是你只是在编写一个库,而不是最终的应用程序。如果其他程序员“忘记”拨打Dispose()
怎么办?您将在lib中获得资源泄漏!
我们可以依赖终结器,但不能保证终结器永远都是called。
那么,有没有办法保证以某种方式释放非托管资源?有什么想法吗?
答案 0 :(得分:2)
除了记录您的课程外,没有其他解决方案。在您的文档中明确写出您的类的使用方式(即它们应尽可能早地处理,可能使用using
,或明确调用Dispose
)。
如果您的消费者没有妥善处理其物品,那么如果人们在野外捣毁垃圾,工业企业应对污染负责,您就不会对内存泄漏负责。
答案 1 :(得分:1)
您可能希望服务器应用程序启用代码分析规则CA2213: Disposable fields should be disposed。
否则我不知道是否有办法保证他们调用你的Dispose()方法。