- - PR -
【WindowsForm】Disposeのタイミングについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-14 10:17
いつもお世話になっております。
VisualStudio2003 .NET Framework1.1 VB.NET で開発を行っています。 Disposeを実施するタイミングについていろいろ調べていたのですが、 (SqlConnectionなどにたいして) 私には難しすぎるし、まだまだ議論されていたりと、どうしていいのかわからない状態です。 とりあえずGCに任せておこうとおもっています。 しかし、1つだけ現時点で気になることがあります。 Windowsフォームデザイナで生成されたコードの中に以下のようなコードが記述されてます。 ############################################################################### ' Form は、コンポーネント一覧に後処理を実行するために dispose をオーバーライドします。 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub ############################################################################### これは何なのか?どのタイミングでこの処理を行っているのか? 勝手な想像ですが、フォームがCloseした時にこの処理が呼ばれて、 Dispose()していると想像しているのですが正しいでしょうか? ご存知の方、恐れ入りますが教えてください。 [ メッセージ編集済み 編集者: kiyo 編集日時 2004-01-14 10:21 ] | ||||||||
|
投稿日時: 2004-01-14 14:08
こんにちわ。諸農です。
SDK HELPのForm.Dispose(Boolean)の解説を見ると、
とのことです。 あとは、Closeの解説やFinalizeの解説、 「アンマネージリソースのクリーンアップ」等々が参考になるかもしれません。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-01-14 15:03
ここでDisposeメソッドがオーバーライドされているのは、 デザイナを表示するときに、Formやその上に配置されているコントロール(コンポーネント)群を 実際にインスタンス化しているので、その後始末用に個々のDisposeメソッドをコールするためだと思います。 (If Not (components Is Nothing) Then 〜 End Ifの部分) なので、とりあえずDisposeするタイミングという本題とは無関係の部分です。 SqlConnectionであれば使い終わったらすぐにCloseしておけばいいかと思います。 [ メッセージ編集済み 編集者: よねKEN 編集日時 2004-01-14 15:05 ] | ||||||||
|
投稿日時: 2004-01-14 18:46
諸農さん、よねKENさんありがとうございます。
>ここでDisposeメソッドがオーバーライドされているのは、 >デザイナを表示するときに、Formやその上に配置されているコントロール(コンポーネント)>群を >実際にインスタンス化しているので、その後始末用に個々のDisposeメソッドをコールするた>めだと思います。 >(If Not (components Is Nothing) Then 〜 End Ifの部分) でわたしの疑問は解決しました。 Disposeの件についてはまたこれから調査していきたいとおもいます。 大変参考になりました。ありがとうございます。 |
1