【C#】モードレス画面のGC管理について@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。09:39いつもお世話になっております。下記のようなコードを書いた場合に関して質問です。�@の場合には、ShowDialog()の応答を待ちますので、ListdlgはGCの対象にはならない。�Aの場合には、Show()で応答を待たないので、参照は0になる?(=あるとき突然なくなっている?)。みたいな扱い)』になりますか?)現在Outlookアドインを開発中で、画面のボタン操作からOutlookのアドレス帳編集画面を開く必要があります。単純に�@案を使用したかったのですが、Outlookのアドレス帳編集画面を開くにはモーダル画面表示中には実行できないようなのです。そこで、�A案で行う必要があるのですが、画面の削除タイミングなどが気になっています。ご存知の方いらっしゃいましたら、アドバイスをお願いいたします。ShowUnModal(){//画面上に設定する。※モーダルでない場合には、画面がローカル変数になる。selectForm();Listdlg.Show();}※selectFormは、formクラスの派生クラスです。以上、よろしくお願いいたします。画面Listdlgは、表示した状態で放置して置くとGCにより削除されてしまうのでしょうか?されません。必要なものと判断し、回収されることはありません。10:57回答ありがとうございます。下記のような認識で、大丈夫そうですね。�@モーダル画面では、ユーザ操作により画面入力完了後に、Closeメソッドをコールする(=自動的にDisposeされる)�Aモードレス画面では、ユーザ操作により画面入力完了(OK、閉じるなどクリック)後に、メソッド内でCloseメソッドをコールすると自動的にDisposeされる。�@、�A共に、Closedイベントを作成し、内部でDisposeするように明示的に記述する必要がある。『(念のため)確実に参照しているように、自AP内で参照しておく』ようにしていたりという声を聞いたもので...GCの振る舞いがよくわからないだけなのですが...(ドキュメントの読みが足りないだけ?)もし参照しているつもり、参照されていないつもりの場合に、それぞれ突如メモリアクセス違反やメモリリーク(リソースリーク)が発生してくると、(ここは無関係と思い込んでしまい、)原因の特定は難しいだろうなぁと思ったもので...(愚痴ってしまい、すみません...)回答ありがとうございました。自信を持ってローカル変数でモードレスFormを作成します。以上、お忙しいとは思いますが、よろしくお願いいたします。保証しておく必要があります。引用:(2)モードレス画面では、ユーザ操作により画面入力完了(OK、閉じるなどクリック)後に、メソッド内でCloseメソッドをコールすると自動的にDisposeされる。モードレスは、まあこれで良いでしょう。フォームのDisposeについて引用:あるいは、(1)、(2)共に、Closedイベントを作成し、内部でDisposeするように明示的に記述する必要がある。これは必要はないです。発生する恐れもあります。11:53回答ありがとうございます。Dispose()の件、了解しました。自信を持ってモードレスFormをローカルで作成してみます。13:14どうやって実現されているのか気になって調べてみました。特別扱いしているのか?いやそんなはずはない。