多线程数据库已更新

jso*_*son 0 c# multithreading database-connection sql-server-2005

我有一个Windows服务(C#),我创建多个线程,尝试更新我的数据库中的状态(SQL Server 2005).

SELECT最初有一个,UPDATE后来必须执行.当我不使用锁来同步我的线程时,我收到错误

已经有一个与此Connection关联的开放DataReader,必须先关闭它

但是当我使用lock(在静态对象上)时,更新速度非常慢.

任何人都可以帮助我解决这个问题.

Myl*_*ell 5

在尝试将其连接用于其他任何事情之前,请确保您的DataReader已关闭.我建议你重构你的代码,这样你就不会在线程之间共享连接.如果您可以提供有关您想要实现的内容的更多信息,我可以提供有用的代码示例.


Dam*_*ver 5

您在应用程序中使用的每个命令对象都应该拥有自己的连接对象,在执行命令之前立即打开,然后立即关闭.(最好包含在using声明中)

信任连接池技术来处理实际的底层连接.这将阻止多个线程同时尝试在同一连接上执行多个命令(这就是您所看到的错误).

线程之间唯一应该共享的是连接字符串.