Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t解决“问题”;Sqlparameter已包含在另一个SqlparameterCollection“中;_C#_Multithreading_Database Connection_Sqlparameter - Fatal编程技术网

C# Can';t解决“问题”;Sqlparameter已包含在另一个SqlparameterCollection“中;

C# Can';t解决“问题”;Sqlparameter已包含在另一个SqlparameterCollection“中;,c#,multithreading,database-connection,sqlparameter,C#,Multithreading,Database Connection,Sqlparameter,我在windows服务中使用了两个线程(来自同一个类)。我总是收到相同的错误消息: "The SqlParameter is already contained by another SqlParameterCollection. at System.Data.SqlClient.SqlParameterCollection.Validate(Int32 index, Object value) at System.Data.SqlClient.SqlParameterCollect

我在windows服务中使用了两个线程(来自同一个类)。我总是收到相同的错误消息:

"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循环的和处的ArrayList。这并不能解决问题。我愿意接受任何建议。

您试图将
SqlParameter
添加到
SqlParameterCollection
两次。这可能发生在线程之间,也可能不发生在线程之间

如果这是一个多线程问题,那么您的所有变量都应该在本地范围内,因为如果它们不是,您应该在它们的访问上实现同步,可能是使用

如果这不是并发性问题,那么可以通过对
SqlParameter
变量执行“查找所有引用”来轻松确定问题


无论哪种方式,如果您发布一些代码,我们都可以为您提供更多帮助。

您尝试向
SqlParameter集合添加
SqlParameter
两次。这可能发生在线程之间,也可能不发生在线程之间

如果这是一个多线程问题,那么您的所有变量都应该在本地范围内,因为如果它们不是,您应该在它们的访问上实现同步,可能是使用

如果这不是并发性问题,那么可以通过对
SqlParameter
变量执行“查找所有引用”来轻松确定问题


无论哪种方式,如果您发布一些代码,我们都可以为您提供更多帮助。

不要在两个线程之间共享相同的sql对象。通过SQL使用池集合不要在两个线程之间共享相同的SQL对象。通过SQL使用池集合

能否显示解决方案的代码?为什么对多个命令使用同一个SqlParameter对象?如果您没有,则表示歉意,但您收到的错误消息强烈表明您有。请尝试清除“命令参数”列表,然后添加新参数。cmd.Parameters.Clear();可以显示解决方案的代码吗?为什么对多个命令使用同一个SqlParameter对象?如果您没有,则表示歉意,但您收到的错误消息强烈表明您有。请尝试清除“命令参数”列表,然后添加新参数。cmd.Parameters.Clear();