0

エンタープライズライブラリのデータアクセスアプリケーションブロックを使用して複数の同時バックグラウンドプロセスを実行してデータベースにデータを挿入するアプリケーションがあります。 バックグラウンドスレッドはそれぞれ、同じデータベースインスタンス名で渡すDatabaseFactory.CreateDatabaseを使用します。私は、これはスレッドセーフではないことを発見していると私は値がスレッド間で最大混入に起因するエラーを取得していますエンタープライズライブラリのデータアクセスを使用する際にスレッドの安全性を確保する方法

Microsoft.Practices.EnterpriseLibrary.Data.Database database = DatabaseFactory.CreateDatabase(this.DatabaseInstanceName); 
DbCommand commandObj = database.GetSqlStringCommand(statement); 

:データベースおよびコマンドオブジェクトを取得するコードのスニペットを以下に示します。これをスレッドセーフであることを保証するにはどうすればよいですか?

ありがとうございます!

答えて

1

私の問題が見つかりました。スレッド間で混ざり合っていた値は、エンタープライズライブラリのデータアクセスオブジェクトではなく、パラメータを格納するために使用した別のオブジェクトによるものです。私は誤って各スレッド内のローカルリソースの代わりにグローバルにしていた。

関連する問題