代码之家  ›  专栏  ›  技术社区  ›  Paul

.NET&COM-类_在对象超出范围时终止/处理对象

  •  1
  • Paul  · 技术社区  · 16 年前

    我的理解是,对于VB6 COM对象,当它超出范围时,会立即对该对象调用Class_Terminate以允许其清理。

    对于COM正在调用的.NET对象,是否可能具有相同的功能?

    http://msdn.microsoft.com/en-us/library/aa479313.aspx

    这将使用自定义对象替换ASP页面中的会话对象,该自定义对象在页面使用Class_Terminate完成时将会话信息序列化回数据库。

    我想在.NET中实现该对象,但是由于GC不会立即调用终结器,这有点问题,因为我不想在将对象序列化回数据库之前等待对象被清除。

    那么,有没有一种方法可以在页面完成后自动调用代码来完成所需的工作呢?:)

    1 回复  |  直到 16 年前
        1
  •  3
  •   RS Conley    16 年前

    代表团将.NET COM类包装在一个VB6 COM类中,该类是一个shell,并在包装器调用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