我有一个运行多个并发后台进程的应用程序,使用企业库的数据访问应用程序块将数据插入数据库。 每个后台线程使用DatabaseFactory.CreateDatabase传入相同的数据库实例名称。以下是检索数据库和命令对象的代码片段:
Microsoft.Practices.EnterpriseLibrary.Data.Database database = DatabaseFactory.CreateDatabase(this.DatabaseInstanceName);
DbCommand commandObj = database.GetSqlStringCommand(statement);
我发现这不是线程安全的,并且由于值在各个线程中混淆而导致错误。我该如何处理它以确保它是线程安全的?
提前感谢!
答案 0 :(得分:1)
我发现了我的问题。跨线程混合的值不是由于Enterprise Library Data Access对象,而是我用来存储参数的另一个对象。我不小心把它变成了全局而不是每个线程中的本地资源。