当即将与RCW断开连接的情况下,没有实现IDISPOSALE接口并明确调用MyObject.dispose时,是否有任何方法可以运行代码?

下面的代码不起作用。当程序输入最终确定后,Excelapplication已经与RCW断开了连接,我会遇到错误。我了解为什么会发生,但我想找到解决方案。

我想以以下方式使其工作:当发布上次托管引用时,最终确定的代码在断开COM对象之前执行。

我的问题是 - 根本不可能吗?

非常简单的类:

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

此类在表单上使用 - 只有一行

dim excelrunner as excelrunner = new excelrunner

然后我关闭表单,并收到错误。

谢谢

有帮助吗?

解决方案

听起来您想收到有关RCW在发生之前断开连接的通知。如果是这样,不幸的是,没有这样的方法可以涉足。您的代码需要考虑到意外断开连接的可能性

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top