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