我的理解是,对于VB6 COM对象,当它超出范围时,会立即调用该对象以允许它清理。
是否可以为COM调用的.NET对象提供相同的功能?
问题的背景基于MSDN文章:http://msdn.microsoft.com/en-us/library/aa479313.aspx
这将使用自定义对象替换ASP页面中的Session对象,该对象在页面完成后通过使用Class_Terminate将会话信息序列化回数据库。
我想在.NET中实现该对象,但是因为GC不会立即调用终结器,所以它有点问题,因为我不想等待对象被清除之前被序列化回数据库。
我可以实现IDisposiable并在完成Session时手动调用Dispose(),但这需要更改每个现有的ASP经典页面,而不是只能在标准包含文件中包含几行。
那么有没有办法自动调用代码来完成页面完成时所需的工作? :)
答案 0 :(得分:3)
团。将.NET COM类包装在一个shell的VB6 Com类中,并包装在包装器调用dispose的Class_Terminate事件中。
如果您不想重新实现VB6 COM类中的整个界面,那么您可以执行类似
的操作Public MyNETCOMObject as MyNETCOMObject
Private Class_Initialize()
Set MyNETCOMObject = New MyNetCOMObject
End Sub
Private Class_Terminate()
If Not MyNETCOMObject = Nothing then MyNETCOMObject.Dispose
Set MyNETCOMObject = Nothing
End Sub