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インターフェースは単なるパターンです。そのパターンを実装するオブジェクトが実行する必要があることの1つは、破棄された後にプロパティとメソッドのObjectDisposedexeceptionを返すことです。ただし、コンパイラーまたはCLRには、オブジェクトにそれを強制するものはなく、オブジェクトをコーディングしたプログラマーが実装する必要があるパターンにすぎません。ガベージコレクタが実際にオブジェクトを削除するまで、そのプロパティにアクセスできます。この場合でも、StaticMemberはオブジェクトを参照します。GarabageCollectorは、その参照が解放されるまでオブジェクトを強制終了しません。

于 2012-08-20T20:54:51.640 に答える