- PR -

Form.Closeメソッドによる破棄とは?

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

渋木宏明(ひどり)さんの書き込み (2006-07-06 20:21) より:
# インスタンスの話は被るので割愛。


ごめん。渋木さん。
インスタンスの話ってどれのこと?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-07-07 00:30
引用:

引用:

# インスタンスの話は被るので割愛。


ごめん。渋木さん。
インスタンスの話ってどれのこと?



あ、ごめんなさい Me.Close() が良いか悪いかのつもりで書いてましたが、意味が通じないですね (^^;;;;

Me.Close() 云々は置いておいて、リザルトをセットするべきかどうかだけについてコメントしたつもりでした>自分
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-07-07 19:22
引用:

ぶさいくろうさんの書き込み(2006-07-06 19:28)より:

ShowDialogで開くなら呼び出し元でDisposeするんで良くないとは断言できないと思うが?
『望ましいです』ならわかるけどDialogResultで制御が戻ろうとCloseで制御が戻ろうとHideで制御が戻ろうとDisposeはするよね。


失礼しました。Form.ShowDialog と Form.Show で、Form.Close の動作が変わるのでした。(「動作が変わる」という言い方が良いか悪いかは?)
Form.Show → Form.Close の中で、Dispose も行われる。
From.ShowDialog → Form.Close では Dispose されない。なので、呼び出し側が Dispose する必要がある。


引用:

渋木宏明(ひどり)さんの書き込み(2006-07-06 20:21)より:

原文の上の方でも書きましたが、影響を受けるかどうかは「自分の書いたコード次第」なわけで、影響を受けるかどうかを自分で把握しとくのは当たり前の話なんじゃないかなぁ?


はい。その当たり前が出来ていない場合が多いのでは?という懸念です。
# 自分のコードを把握していてたら、ここの質問の 1/3 はされていない、と思う。
# そのうち 1/10 くらいは、他所からコピーしてきたコードじゃないかな?
# あ、自分で書いていないから把握する必要はない???
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-07 19:53
引用:

渋木宏明(ひどり)さんの書き込み (2006-07-07 00:30) より:
あ、ごめんなさい Me.Close() が良いか悪いかのつもりで書いてましたが、意味が通じないですね (^^;;;;

Me.Close() 云々は置いておいて、リザルトをセットするべきかどうかだけについてコメントしたつもりでした>自分



割愛したのってDisposeがらみのことかな?
ちょっとこのあたりは僕もいろいろと詳しく知りたくってね・・
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-07-08 00:49
引用:

割愛したのってDisposeがらみのことかな?



です。

引用:

ちょっとこのあたりは僕もいろいろと詳しく知りたくってね・・



IDisposable に課せられた原則と、個々のクラス実装における IDisiposable.Dispose(), Dispose() の実装(動作)を区別して考えるようにすれば、混乱は避けられると思います。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-08 11:23
引用:

渋木宏明(ひどり)さんの書き込み (2006-07-08 00:49) より:
です。


ありがとう。このあたりだけ確認したかった。
別の意味を含んでいるのかなと思って。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2006-07-12 18:50
objectです。

気になったので、一言だけ。
>まどかさん
>個人的には、Form自身でMe.Closeとすることは違和感があるので使用せず
>Form.DialogResultを設定して、呼び出し元でCloseとDisposeを呼び出すようにしています。
仰られている事は、理解します。
確かに、「自ら命を絶つ」様ですから。
#表現に問題があれば、許して下さい。<(_ _)>

しかし、「継承或いは実装」を眺めて頂ければ理解出来る様に、
Close()
は、「Form」に対して特別に実装されている考えられます。

また、
Dispose()
は、
Close()
を通して
WmClose()
の中で呼ばれています。

結論として、私は
Close()は、Form自身でMe.Close()
と処理する事を意図して基本的には設計されている。
と考えています。
#これは、VCLを踏まえた私の見解でもあります。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-12 19:04
引用:

objectさんの書き込み (2006-07-12 18:50) より:
結論として、私は
Close()は、Form自身でMe.Close()
と処理する事を意図して基本的には設計されている。
と考えています。
#これは、VCLを踏まえた私の見解でもあります。


うーん。そんなことはないと思うけどなぁ。
ShowDialogの時の都合っていう目で見るとそうかもしれないけど・・・
個人的な見解にけちつけること自体が間違ってるけど。
これも個人的な見解です。

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