2012-04-20 6 views
5

これは私のコードをスピードアップするためには、いくつかのテーブルSqlConnectionの

using (SqlConnection conn = new SqlConnection("myConnString")) 
{ 
    DoWork1(conn); 
    DoWork2(conc); 
    DoWork3(conn); 
} 

にいくつかのデータを保存し、私の既存のコードので、私は、.NET TPLサポートを取得しようと、私は

以下のように私のコードをrehangedです

しかし、これは私のデータアクセス層のExecuteNonQuery()メソッドからの内部接続の致命的なエラー例外をスローします。私の並列アプローチは間違っていますか?

+0

"私の並列アプローチは間違っていますか?" - かなり可能性があります。 –

答えて

8

まあ、は、MARSを使用して動作させることができますが、私は別のアプローチを提案します。 (複数の同時操作が許可されていても、MARSが複数のスレッド間で同じ接続を使用できるかどうかはわかりません)

すべての並列タスクで1つの接続を再利用するのではなく、 )自分自身のための接続、そして接続プーリングがそれの効率面を扱うようにしてください。これは、並列性を使用しているかどうかにかかわらず、.NETの一般的なベストプラクティスです。接続を開き、いくつかの作業を行い、接続を閉じます。

+0

あなたの迅速な対応に感謝します。私は2番目の方法を試してみます(1回の操作で接続を1回開いたり閉じたり) – Renushi

関連する問題