回答数ランキングです。数リストボックス最大このQ&Aと関連する良く見られている質問QCloseとDisposeの違いみなさまこんばんわです。2008でコーディングしています。CloseとDisposeの違いについて教えていただきたいのです。)のみに限ったこととしてお話しさせていただきます。しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。すると、きれいにプロセスは終了し、イベントは発生しない模様です。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。変えるとうまくいきました。わけわからなくなってきました。ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。ここで4つの仮説を立ててみました。ありがとうございました。みなさまこんばんわです。2008でコーディングしています。CloseとDisposeの違いについて教えていただきたいのです。)のみに限ったこととしてお話しさせていただきます。しても、プロセスは残り、たとえば、...続きを読むAベストアンサーMe.Close()Me.Dispose()は根本的に違うものです。formについて、Close()メソッドはフォームの表示を終了させるメソッドです。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。>再利用できる、できないの違いDispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。Close()はインスタンスが残っているので、それを利用することができます。ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。変えるとうまくいきました。通常はどちらでもうまくいきます。ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できるShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。呼び出し方ではなく、別の要因が存在するそう思います。併記する必要がある場合があるインスタンスを明示的に破棄したほうがよい場合は多く存在します。Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。これらのメンバは、外部とのやり取りを行うものが多くあります。SQLClientに含まれるようなメンバです。外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。Using構文を使用するのとまったく同じ理由になります。正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。上記のような理由により、Me.Close()Me.Dispose()は両方書いたほうがよいと思います。蛇足ですが、Me.Dispose()Me.Close()はエラーになります。Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。存在しないMeに対してCloseメソッドを要求することはできないためです。Me.Close()Me.Dispose()は根本的に違うものです。formについて、Close()メソッドはフォームの表示を終了させるメソッドです。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。>再利用できる、できないの違いDispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。Close()はインスタンスが残っているので、それを利用することができます。SLCTBOXもしくはSELECTに...15コマンドプロンプトで{ENTRE]キ...16ExcelのVBA。Inc.Q質問する(無料)Q&A検索goo検索gooIDで新規登録・ログイン新規登録する(無料)会員の方はこちら外部サービスのアカウントで新規登録・ログインYahoo!で新規登録・ログインGoogleで新規登録・ログインTwitterで新規登録・ログインFacebookで新規登録・ログインdアカウントで新規登録・ログイン※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。会員でない方、会員になるとあなたも質問や回答ができるようになります!!親切・丁寧な回答が集まる場30分以内に回答がもらえ回答数は平均3件!匿名(ニックネーム)での投稿なので。