0

我正在使用下面的模板来显示模态表单

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

有人可以帮我理解为什么会这样。谢谢。

4

1 回答 1

2

在垃圾收集器删除并释放它正在使用的内存之前,已释放的对象仍然存在。IDispose 接口只是一种模式。实现该模式的对象应该做的一件事是在其被释放后为属性和方法返回一个 ObjectDisposed 异常。但是,编译器或 CLR 中没有任何内容强制对象这样做,它只是编写对象的程序员应该实现的模式。在垃圾收集器实际删除对象之前,您仍然可以访问其属性。在这种情况下,StaticMember 仍然引用该对象。GarabageCollector 不会杀死该对象,直到该引用被释放。

于 2012-08-20T20:54:51.640 回答