COM 개체가 IDisposale 인터페이스와 명시 적으로 MyObject.Dispose를 클라이언트 코드로 구현하지 않고 RCW에서 연결을 끊을 때 코드를 실행할 수있는 방법이 있습니까?COM 개체가 RCW에서 연결이 끊어지면 처리 할 수있는 방법이 있습니까?
아래 코드는 작동하지 않습니다. 프로그램이 Finalize 하위를 입력하면 ExcelApplication은 이미 RCW에서 연결이 끊어져 오류가 발생합니다. 왜 그런지 이해하지만 해결책을 원합니다.
마지막으로 관리되는 참조가 해제되면 COM 개체 연결이 끊어지기 전에 Finalize 하위의 코드가 실행됩니다.
내 질문은 - 전혀 가능하지 않다. 그렇다면 외부에서 Finalize를 명시 적으로 호출 할 필요없이 어떻게 클래스 내에서이 이벤트를 처리 할 수 있습니까?
매우 간단한 클래스는 : - 단지 한 줄
가 그럼 난 양식을 닫습니다 ExcelRunner = 새로운 ExcelRunner로
희미한 ExcelRunner하고, 오류가 발생
Public Class ExcelRunner
Dim ExcelApplication As Excel.Application
Public Sub New()
ExcelApplication = New Excel.Application
ExcelApplication.Visible = True
End Sub
Protected Overrides Sub Finalize()
MyBase.Finalize()
ExcelApplication.Quit()
End Sub
End Class
이 클래스는 양식에 사용된다 . 당신이 RCW에 대한 알림을 수신 할 것 소리
감사
예, 발생하기 직전에 알림을 받고 싶습니다. – xll
@xll 불행히도 그건 불가능합니다. – JaredPar