私はこの質問に対して矛盾する結果を見つけ続けています。のは、SQLクエリを実行し、このC#のコードを見てみましょう:usingキーワードでSQL Server接続を閉じる必要がありますか?
using (SqlConnection cn = new SqlConnection(strConnectString))
{
cn.Open();
using (SqlCommand cmd = new SqlCommand(strSQL, cn))
{
cmd.ExecuteNonQuery();
}
//Do I need to call?
cn.Close();
}
が、私はその最後のcn.Close()
を呼び出す必要がありますか?私が求めている理由は、大量のトラフィックWebアプリケーションでプール内の接続が不足していることです。
ありがとうございました。問題は - 接続がすぐに閉じられるか、またはガベージコレクタが接続されると閉じられるかどうかです。それは私の場合に違いを生むからです。 – c00000fd
"同じ接続文字列を使用していることを確認してください" - それはどういう意味ですか? 'SqlConnection cn'を静的変数として定義しますか? – c00000fd
'それは不確定ファイナライゼーション' = **間違った**です。接続は 'using'ステートメントの範囲外に出た直後に処理されます。それはガベージコレクションとは関係ありません。実際、非決定論的なGCは、IDisposableインターフェイスとDispose Patternが.NETに導入された理由です。 –