当COM对象与RCW断开连接时,有什么方法可以处理?
题
当即将与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在发生之前断开连接的通知。如果是这样,不幸的是,没有这样的方法可以涉足。您的代码需要考虑到意外断开连接的可能性
不隶属于 StackOverflow