オブジェクトをどこで破棄するか
こんにちは。C#もしくはVBについてお教え下さい。オブジェクトの破棄をどこですればいいかわからなく、悩んでいます。
フォームには下記のオブジェクトが配置されています。
・データグリッドビュー
・検索ボタン
・閉じるボタン
動作は下記のようになります。
・フォームをロード時、データベースにアクセス。データテーブルにデータをセット。グリッドビューに表示。
・検索ボタン。データベースにアクセス。データテーブルにデータを再びセット。グリッドビューに表示。
・閉じるボタン。フォームを閉じる。
・DataTable、DataAdapter、sqlConnectionなどの変数は使い回しています。
質問:
これらのオブジェクトを破棄、disposeするのは、どのタイミングですれば良いでしょうか?
閉じるボタンを押された時でしょうか?またフォームの右上にバッテンマークがありますが、これが押された時もdispose処理を入れておいたほうがいいのでしょうか?
またはフォームを閉じた時は自動で破棄してくれるのでしょうか?
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
書かれているうちで,手動によるDispose対象になるのはSqlConnectionだけですね。
コントロールは親がDisposeされるとそのままDisposeされるので。
で,IDisposableなインスタンスが自分の管理下にある場合,
・不要になったらDisposeを呼び出す
・IDisposableなインスタンスは必要最小限の範囲で使う
のがよいと思います。
SqlConnectionに関しては,コネクションプーリングに任せて必要な時のみ開いて閉じればよいでしょう。
# SqlConnectionに関して,Poolingはデフォルトtrue。
このため,
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
/* DataAdapter使ってDataTableに値を流し込む */
}
と,単一メソッドの中で開いて閉じることになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス内にWin32APIのコールバ...
-
VB6では、Applicationは未定義...
-
C++の連想配列の使い方
-
オブジェクトをどこでdisposeす...
-
SetとNothingの存在意味?
-
イベントドリブンとオブジェク...
-
メモリリークが発生するのはど...
-
メモリ解放について、ご教授く...
-
ボタンを押すとラベルの文字を...
-
既定のコンストラクタがない?
-
SetTimerの行でアサートエラー...
-
【MFC】ユーザインタフェースス...
-
FriendとPublicの違い。。。
-
クラスのアドレスを引数として...
-
OnInitDialog()の関数の組み込み方
-
プロパティーシートのHELP...
-
fgets の失敗時、再読み込み開...
-
VB.NETで、DLLを頂いたんですが...
-
Delphi6 DLL内でのメモリ共有(?)
-
Serialize で困ってます!!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CreateObjectとはどういう意味...
-
オブジェクト型の変数が定義さ...
-
C# panel内のコントロールの使...
-
最小化したフォームを元に戻す
-
メモリリークが発生するのはど...
-
クラス内にWin32APIのコールバ...
-
イベントドリブンとオブジェク...
-
Visual studio c# android オブ...
-
関数で値渡しと参照渡しではど...
-
C#でのUNZIP32.DLLの利用方法が...
-
ゆかりネットで東北ずん子exを...
-
VB6では、Applicationは未定義...
-
STLの質問です
-
SetとNothingの存在意味?
-
C#でのコンパイル時のエラー
-
メモリ解放について、ご教授く...
-
C#でExcelを起動したい
-
ボタンを押すとラベルの文字を...
-
UMLでの「オブジェクト」と「イ...
-
Disposeはするべきですか?
おすすめ情報