0

Enterprise Library の Data Access アプリケーション ブロックを使用して、複数の同時バックグラウンド プロセスを実行し、データベースにデータを挿入するアプリケーションがあります。各バックグラウンド スレッドは、同じデータベース インスタンス名を渡す DatabaseFactory.CreateDatabase を使用します。以下は、データベースとコマンド オブジェクトを取得するコードのスニペットです。

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

これはスレッドセーフではなく、スレッド間で値が混同されているためにエラーが発生しています。スレッドセーフであることを確認するには、これをどのように処理すればよいですか?

前もって感謝します!

4

1 に答える 1

1

私の問題を見つけました。スレッド間で値が混同されていたのは、Enterprise Library Data Access オブジェクトが原因ではなく、パラメーターを格納するために使用した別のオブジェクトが原因でした。各スレッド内のローカル リソースではなく、誤ってグローバルに作成してしまいました。

于 2016-10-19T17:50:17.123 に答える