COM オブジェクトが RCW から切断されようとしているときにコードを実行する方法はありますか?
以下のコードは機能しません。プログラムが Finalize サブに入ると、ExcelApplication は既に RCW から切断されており、エラーが発生します。原因はわかりましたが、解決策を知りたいです。
次のように動作させたい: 最後のマネージ参照が解放されると、COM オブジェクトが切断される前に Finalize サブからのコードが実行されます。
私の質問は - それはまったく可能ですか?そうであれば、Finalizeを外部から明示的に呼び出す必要なく、クラス内でこのイベントをどのように処理できますか?
非常に単純なクラス:
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
このクラスはフォームで使用されます - 1 行だけです
ExcelRunner として ExcelRunner を暗くする = 新しい ExcelRunner
次に、フォームを閉じてエラーを受け取ります。
ありがとう