我使用下面的模板显示模态表单
Using tempForm As New CustomForm
'Do Something
StaticClass.StaticMemeber = tempForm
tempForm.ShowDialog
End Using
'I can still access the properties of tempForm here
MsgBox(StaticClass.StaticMemeber.Text)
'However this below returns True
MsgBox(StaticClass.StaticMember.IsDisposed)
Public Class StaticClass
Public Shared StaticMember as Control
End Class
有人可以帮助我理解为什么会这样。感谢。
答案 0 :(得分:2)
在垃圾收集器删除并释放正在使用的内存之前,已处置的对象仍然存在。 IDispose接口只是一个模式。实现该模式的对象应该做的事情之一是在处置属性和方法之后返回ObjectDisposed异常。但是,编译器或CLR中没有任何内容强制对象执行此操作,它只是编码对象的程序员应该实现的模式。在垃圾收集器实际删除obejct之前,您仍然可以访问其属性。在这种情况下,StaticMember仍然引用该对象。在释放该引用之前,GarabageCollector不会终止该对象。