【发布时间】:2011-09-11 11:43:24
【问题描述】:
我在 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 对象?抱歉,如果您不是,但您收到的错误消息强烈表明您是。
-
尝试清除命令参数列表,然后添加新参数。 cmd.Parameters.Clear();
标签: c# multithreading database-connection sqlparameter