2009-03-05 8 views
1

VB6 COM 개체가 범위를 벗어날 때 Class_Terminate는 개체를 즉시 정리할 수 있도록 호출된다는 것을 알고 있습니다..NET & COM - Class_Terminate/범위를 벗어날 때 개체 처분

COM에서 호출중인 .NET 개체에 대해 동일한 기능을 사용할 수 있습니까? 이것은에 의해 페이지가 완료 되 자마자 다시 데이터베이스에 세션 정보를 직렬화 사용자 정의 객체에 ASP 페이지에서 세션 개체를 대체 http://msdn.microsoft.com/en-us/library/aa479313.aspx

:

질문에 대한 배경은 MSDN 문서를 기반으로 Class_Terminate 활용.

개체를 .NET에서 구현하고 싶습니다. 그러나 개체가 정리 될 때까지 기다릴 필요가 없으므로 GC가 finalizer를 즉시 호출하지 않으므로 문제가됩니다. 데이터베이스로 다시 직렬화되기 전에.

세션을 완료하면 IDisposiable을 구현하고 Dispose()를 수동으로 호출 할 수 있지만 표준 포함 파일에 몇 줄만 포함 할 수있는 것보다는 모든 기존 ASP 클래식 페이지를 변경해야합니다.

페이지가 완료 될 때 필요한 작업을 수행하도록 코드를 자동으로 호출하는 방법이 있습니까? :)

답변

3

위임. VB6 Com 클래스의 셸 및 래퍼 호출 dispose Class_Terminate 이벤트에서 .NET COM 클래스 래핑하십시오.

당신이 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 
같은