
オブジェクトをどこで破棄するか
こんにちは。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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
VBAから書き込んだ条件付き初期...
-
WindowsのOutlook を VBA から...
-
マクロの記録を使用したマクロ...
-
vbsでのwebフォームへの入力制限?
-
ダブルクリックで貼り付けた画...
-
エクエルのVBAコードについて教...
-
ExcelのVBAコードについて教え...
-
vbs ブック共有を解除
-
VBAでFOR NEXT分を Application...
-
Excelのマクロについて教えてく...
-
Vba WorkBooks.Openについて教...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
[Excel VBA]特定の条件で文字を...
-
【VBA】値を変更しながら連続で...
-
vba textboxへの入力について教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクトをどこでdisposeす...
-
コンストラクタ内でのthisポインタ
-
C# panel内のコントロールの使...
-
メモリリークが発生するのはど...
-
DataGridViewがクラッシュする
-
関数で値渡しと参照渡しではど...
-
最小化したフォームを元に戻す
-
メモリ解放について、ご教授く...
-
オブジェクト型の変数が定義さ...
-
【VC++6.0(MFC)】「Out of memo...
-
ボタンを押すとラベルの文字を...
-
イベントドリブンとオブジェク...
-
C#でのコンパイル時のエラー
-
デザイナ時のエラー「オブジェ...
-
ソースの書き方について
-
クラス内にWin32APIのコールバ...
-
C#でのUNZIP32.DLLの利用方法が...
-
クラス?オブジェクト?インス...
-
UMLでの「オブジェクト」と「イ...
-
既定のコンストラクタがない?
おすすめ情報