我为.net创建了一个围绕mysql连接器的包装类,使其使用起来更加舒适(以及交换我正在计划的其他事情)。
我的想法是,每次请求时,我都会生成一个包装器的新实例,做任何事情,当请求被响应时,应该销毁包装器对象并在其finalize子句中关闭连接。
我做了一些负载测试但是如果推得足够硬,看起来我用完了池连接,因为包装器对象没有被足够快地破坏。
那么..是否有任何其他我可以覆盖的子,也许是在与所述对象的所有交互完成后立即执行的东西?
答案 0 :(得分:0)
如果类实现IDisposable
,您可以将其用法包装在using
块中,一旦块退出就会将其处理掉。您应该对所有实现IDisposable
的类执行此操作,以确保及时清理其资源,否则您将受到垃圾收集器的支配。
例如:
Using myObject As New MyWrapperType(wrappedThing)
' Do stuff with myObject
End Using
在C#中
using(var myObject = new MyWrapper(wrappedThing))
{
// Do stuff with myObject
}
当using
区块超出范围myObject
时,将被处置。
有关详细信息:Using Statement (Visual Basic)
<强>更新强>
我应该补充一点,如果你要将IDisposable
添加到你的包装器中,那么你应该对你要包装的对象调用dispose,这样它们也会在Using
块退出时被处理掉。