- PR -

終了処理について

投稿者投稿内容
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-04-04 18:44
引用:

mioさんの書き込み (2007-04-04 17:41) より:
VB6の場合、.netと比較して即時終了することによる問題は少ないと思いますが。


じゃーそう思う理由を具体的にあげたらどうなの。
ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2007-04-04 19:58
VB6でも ENDは強制終了だったかと。
後始末をしないで切ったりすると、メモリーリークになりかねないのは暗黙知。
最早 VB6の環境が無いので、確認とれませんが、END命令実行後に後始末をしてくれるとは思えないのですが....とくにシステムリソース使っていたらなおさらです。

_________________
ognac@わんくま同盟
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-04 20:26
一応情報提供ということで、ここにぶら下げておきます。
VB6 の End ステートメントについてです。

強制終了扱いのため、インスタンス毎の 「デストラクタ」 は実行されません。
End ステートメントでは、Form.QueryUnload、Form.Unload、および Class_Terminate は実行されません。

End ステートメントで、"始末してくれるところ" も大差ありません。
たとえば、Open ステートメントで開いたファイルを閉じられる、変数のクリアなどが挙げられます。

ということで、根本的な問題点は変わりません。
個人的には、"比較して問題は少ない" とは言いきれないと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-04-04 22:19
引用:

ognacさんの書き込み (2007-04-04 19:58) より:
後始末をしないで切ったりすると、メモリーリークになりかねないのは暗黙知。


まっとうなOSならこんなことは起こらないでしょう。
ていうかこういう後始末をきっちりするのがOSの仕事です。

もちろん強制終了なんて望ましくないのは言うまでもありませんが。
ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2007-04-05 00:42
>まっとうなOSならこんなことは起こらないでしょう。
GDIなどのシステムリソースのCreateObjectした際や,通信ポートを開いて非同期実行Objectを生成した時なども, 後始末してくれましたっけ?。メモリー域の管理者が起動アプリから他者に移るので、リークした記憶があるのですが。 (環境がないので、いまとなっては確認しようがないので、恐縮なんですが)

_________________
ognac@わんくま同盟
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-04-05 01:04
別の process で動いているものも開放できたらすごいな。
ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2007-04-05 09:56
よく考えたら、私のコメントはピントがずれてますね。'End' は自分のプロセスが所有しているリソースを消すという解釈すればいいのかな。
自分で後始末しないで 'End' するコーディングは行儀が悪いし、潜在バグの元になります。

_________________
ognac@わんくま同盟
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-04-05 10:02
引用:

じゃんぬねっとさんの書き込み (2007-04-04 20:26) より:
強制終了扱いのため、インスタンス毎の 「デストラクタ」 は実行されません。
End ステートメントでは、Form.QueryUnload、Form.Unload、および Class_Terminate は実行されません。


過去の自分のコードを見てみました。終わりたいところでは、Unload Meしてました。
で、Form_Unloadの最後でEndしてました。

すみません、だいぶおかしなこと書いてました。

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