2016-06-20 2 views
0

sqlserverからデータを読み込み、データの各行に対して別々のスレッドを開始するc#マルチスレッド関数を作成しました。各スレッドでは、dbで作業する必要があるコードがあります。 これは私が各スレッドに何をすべきかです:C#マルチスレッドでのSql接続の管理

  • はそれに新しいSQL接続
  • 接続を作成し、
  • それを開く(それが必要ないときに)
  • 閉じる接続を仕事でください

Using()コマンドを使用していることに注意してください。この文はSQL接続を管理し、コマンドの実行後に自動的に閉じます。

この関数は(1分毎言う)定期的に呼び出されるべき 、これは私が入る問題である:アクティブなSQL接続の最初の呼び出し番号が各行ごとに作成された行(スレッドの数を増加した後

2番目の呼び出しでこの番号が再び増加します。例えば、100行の5コールの後に500のアクティブなSQL接続があるとします。 しかし、私は接続プーリングが接続を管理し、作成された接続を再び使用することを読んでいます。 この問題を解決するにはどうすればよいですか? 私は声明を忘れてしまったのですか、忘れてしまったことがありますか?

+0

あなたの質問にいくつかのコンテキストを提供してください。あなたは何をしようとしていますか?これは負荷テストアプリケーションですか? – Alex

+0

その監視サービスと私はdbに監視する必要があるデバイスを挿入し、各デバイスを監視するための新しいスレッドを開始します –

+0

これがあなたのケースと関連性があるかどうかを見てください:http://stackoverflow.com/questions/268982/net -sqlconnection-not-being-closed-even-when-using-when-a-use – Alex

答えて

0

使い方はやりとりしています。それ以上のことは、Disposeを呼び出すことだけです。

in a "using" block is a SqlConnection closed on return or exception?

+0

それがdisposeを呼び出すと、接続が開いたままになり、disposeコマンドの後に閉じない理由は何ですか? –

+0

接続プール(https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx)のために開いたままになることがあります。 プール内の接続の最大数を接続文字列で制限できます。最大プールサイズ= xxx。 コードスニペットがなければ、私はもっと助けることはできません。 – Dexion

+0

はいそれは接続プールのために、どのようにタイムコネクションの残量を制限できますか?それともプールを無効にするのは悪い方法ですか? –

関連する問題