VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/10/27(Fri) 12:25
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe: Nothingのタイミング

> クローズしたら必ずNotingという考えで良いですか?
Recordset にしても Connection にしても、多くの場合、「Close」と「参照の解放」は、
セットで使われる事が多いでしょうし、混乱が少なくて済むかと思います。
(明示的な Nothing 代入でも、別インスタンス代入やスコープによる自動解放でも OK)

ですが、常に Close と解放がセットというわけではありません。
たとえば、OLE DB のコネクションプーリング機構を使うときなどは、
「Conecction.Open 後 すぐに Close するが、アプリ終了まで Nothing しない」
という使い方もされますので、常に Close 直後に Nothing するわけではありません。


> レコードセットは数回作るという条件です。
たとえば、
 RS.Close
 Set RS = New ADODB.Recordset   'あるいは、Set RS = Cn.Execute(sql) など
のような使い方をするのであれば、Close 後の Nothing をしてもしなくても OK ですが、
 RS.Close
 RS.Open '引数無し
のような使い方をするのであれば、Nothing の代入を行ってはいけません。

あるいは、Close から、次の Open までの期間が長く、かつ、コネクションプーリングの必要が
無いのであれば、Close 直後に、直ちに Nothing 代入を行うべきでしょう。


ということで、端折って書けば「多くの場合は、Close 後の Nothing 代入で問題なし」
「ただしケースバイケースで、それを行うべきでは無いと言う状況もある」、と。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -