- PR -

インスタンスの開放とは

1
投稿者投稿内容
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2006-02-17 09:24
おはようございます。

インスタンスの開放について疑問があります。
環境はVB6です。

まずフォームのインスタンスを立てたとします。
そのたてたフォームインスタンスをLOADし画面が表示されます。
その後フォームをUNLOAD等のアクションをしない状態で、
インスタンスの開放をしてもフォームは残ったままとなります。

例)
dim FormTest as form
load FromTest
set FormTest = nothing

インスタンスの開放をしてもフォームが残っているのであれば、
解放後に見えているフォームはいったいなんなのでしょうか?
教えてください!
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-17 09:37
引用:

イオンさんの書き込み (2006-02-17 09:24) より:

その後フォームをUNLOAD等のアクションをしない状態で、
インスタンスの開放をしてもフォームは残ったままとなります。


これは、VB7 (VB.NET) 以降でも同様です。
VB7 以降の場合は Close メソッドにあたりますが。

引用:

例)
dim FormTest as form
load FromTest
set FormTest = nothing
インスタンスの開放をしても


これは「参照」を解放しているだけですよね。
Terminate イベントで Form 自体を UnLoad しているわけじゃないですから。
要するにデストラクタは呼ばれてるけど、何もしていないわけです。

引用:

フォームが残っているのであれば、
解放後に見えているフォームはいったいなんなのでしょうか?
教えてください!


宣言した変数のスコープ範囲外ですが、生きているインスタンスです。
スコープを抜ける == 解放 ではない、ということです。

Forms コレクションに「参照」は残っていますけどね!

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2006-02-17 09:50
レスありがとうございます!

nothingは参照破棄で、インスタンス自体は生きているということなんでしょうか?
では、インスタンスを完全破棄することはできないのですか?
完全に破棄されればフォームも消えると言う事なると思うのですが・・

よろしければ詳しく教えて頂けないでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-17 09:55
引用:

イオンさんの書き込み (2006-02-17 09:50) より:

では、インスタンスを完全破棄することはできないのですか?
完全に破棄されればフォームも消えると言う事なると思うのですが・・


だから、それが Unload ステートメントの役割なんですよね。(^-^;)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-02-17 13:04
開放しないで解放してくださいね。
_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2006-02-17 14:58
漢字間違えてましたね。
すいません。

じゃんぬねっとさんありがとうございました!!
1

スキルアップ/キャリアアップ(JOB@IT)