プロが教える店舗&オフィスのセキュリティ対策術

VS2003とSQL Server Management Studio Expressを使用して
VB.NETでデータベースを利用したプログラムを学んでいます。
その中でdetasetというものを習ったのですが
取得したdatasetが破棄されるタイミングがわかりません。

プログラム内で破棄するようなコードを書いていない場合
datasetはどのようなタイミングで破棄されるのでしょうか?

過去の質問を検索しましたが発見することができませんでした。
もし、過去に同じような質問がありましたらそちらのURLを教えて頂ければ幸いです。

あまり理解できていないため、おかしな表現などあるかと思いますが
回答をお願いします。

A 回答 (2件)

>やっぱりタイミングはプログラムで書かない限りわからないものなんですね



いえ。プログラムで書けないから、わからないものなのです。
どんなにがんばってもわかりません。

>プログラムの終了は「もう使われていないな」という判断にはならないのでしょうか?

もちろん、なります。
アプリケーションの終了は、全てのアプリケーション固有のリソースを開放します。
共有リソースを定義した場合は、その部分は開放されません。
(例えば、C言語でmarshalでアロケーションした場合とかは開放されない)
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
回答ありがとうございます。
VSを使って開発中と書きましたが、VSを再起動させて試したところ
SQLサーバが稼働していなくてもプログラムが正常に動いたため(デバッグモード)
?となってしまいました。

PC自体を再起動させると当然SQLサーバに接続しないと動かないのですが;

VSの終了とプログラムの終了はデバッグモードであっても関係ないのでしょうか?

何度も質問してしまい申し訳ありません。

お礼日時:2007/02/05 16:45

正直「誰にもわからない」が答えだと思いますが、、


.NETの仮想マシン(CLRかな)が、『「もう使われていないな」と判断したとき』に破棄されます。
明示的に本当の意味で破棄することはできませんが、
アプリから見た破棄は、dataset.disposeを実行したタイミングで、破棄といってよいのではないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>正直「誰にもわからない」が答えだと思いますが、、
やっぱりタイミングはプログラムで書かない限りわからないものなんですね。

質問が若干変わってしまいますが、
プログラムの終了は「もう使われていないな」という判断にはならないのでしょうか?
なることもあるし、ならないこともある。
などの曖昧な答えでもよいのでお手数ですが回答をお願いします。

回答本当にありがとうございました。

お礼日時:2007/02/02 15:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!