Как обеспечить безопасность потоков при использовании доступа к данным Enterprise Library

У меня есть приложение, которое запускает несколько параллельных фоновых процессов для вставки данных в базу данных, используя блок приложения Доступ к данным из Библиотеки предприятия. Каждый из фоновых потоков использует DatabaseFactory.CreateDatabase, передавая одно и то же имя экземпляра базы данных. Ниже приведен фрагмент кода, который извлекает базу данных и объект команды:

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

Я обнаружил, что это не потокобезопасно, и я получаю ошибки из-за путаницы значений в потоках. Как я должен справиться с этим, чтобы гарантировать, что это потокобезопасно?

заранее спасибо!

1 ответ

Я нашел свою проблему. Значения, которые смешивались между потоками, были связаны не с объектами доступа к данным Enterprise Library, а с другим объектом, который я использовал для хранения параметров. Я случайно сделал его глобальным, а не локальным ресурсом в каждом потоке.

Другие вопросы по тегам