- - PR -
終了処理について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-04 18:44
じゃーそう思う理由を具体的にあげたらどうなの。 | ||||
|
投稿日時: 2007-04-04 19:58
VB6でも ENDは強制終了だったかと。
後始末をしないで切ったりすると、メモリーリークになりかねないのは暗黙知。 最早 VB6の環境が無いので、確認とれませんが、END命令実行後に後始末をしてくれるとは思えないのですが....とくにシステムリソース使っていたらなおさらです。 _________________ ognac@わんくま同盟 | ||||
|
投稿日時: 2007-04-04 20:26
一応情報提供ということで、ここにぶら下げておきます。
VB6 の End ステートメントについてです。 強制終了扱いのため、インスタンス毎の 「デストラクタ」 は実行されません。 End ステートメントでは、Form.QueryUnload、Form.Unload、および Class_Terminate は実行されません。 End ステートメントで、"始末してくれるところ" も大差ありません。 たとえば、Open ステートメントで開いたファイルを閉じられる、変数のクリアなどが挙げられます。 ということで、根本的な問題点は変わりません。 個人的には、"比較して問題は少ない" とは言いきれないと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-04-04 22:19
まっとうなOSならこんなことは起こらないでしょう。 ていうかこういう後始末をきっちりするのがOSの仕事です。 もちろん強制終了なんて望ましくないのは言うまでもありませんが。 | ||||
|
投稿日時: 2007-04-05 00:42
>まっとうなOSならこんなことは起こらないでしょう。
GDIなどのシステムリソースのCreateObjectした際や,通信ポートを開いて非同期実行Objectを生成した時なども, 後始末してくれましたっけ?。メモリー域の管理者が起動アプリから他者に移るので、リークした記憶があるのですが。 (環境がないので、いまとなっては確認しようがないので、恐縮なんですが) _________________ ognac@わんくま同盟 | ||||
|
投稿日時: 2007-04-05 01:04
別の process で動いているものも開放できたらすごいな。
| ||||
|
投稿日時: 2007-04-05 09:56
よく考えたら、私のコメントはピントがずれてますね。'End' は自分のプロセスが所有しているリソースを消すという解釈すればいいのかな。
自分で後始末しないで 'End' するコーディングは行儀が悪いし、潜在バグの元になります。 _________________ ognac@わんくま同盟 | ||||
|
投稿日時: 2007-04-05 10:02
過去の自分のコードを見てみました。終わりたいところでは、Unload Meしてました。 で、Form_Unloadの最後でEndしてました。 すみません、だいぶおかしなこと書いてました。 |