我在 Windows 服务中使用 2 个线程(来自同一类)。我总是收到相同的错误消息:
"The SqlParameter is already contained by another SqlParameterCollection.
at System.Data.SqlClient.SqlParameterCollection.Validate(Int32 index, Object value)
at System.Data.SqlClient.SqlParameterCollection.Add(Object value)
at System.Data.SqlClient.SqlParameterCollection.Add(SqlParameter value)
at DataBaseLayer.SqlDataBaseLayer.FillDataSetFromProcedure(String strStoredProc, ArrayList parameterCollection)
at TestThread.StartThreads()"
我尝试通过创建 SqlParameters 和 Arraylist 的新实例来解决该问题。我还尝试清除代码中 for 循环的数组列表。这并不能解决问题。我愿意接受任何建议。
您正在尝试添加一个SqlParameter
to a SqlParameterCollection
两次。这可能会也可能不会跨线程发生。
如果这是一个多线程问题,那么所有变量都应该在本地范围内,因为如果不是,您应该在其访问上实现同步,可能使用lock
.
如果这不是并发问题,则可以通过在您的数据库上执行查找所有引用来轻松识别问题。SqlParameter
多变的。
无论哪种方式,如果您发布一些代码,我们都可以为您提供更多帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)