“System.InvalidOperationException:Collection已被修改”(但我没有尝试修改集合)

时间:2015-12-16 16:48:24

标签: c# enumeration invalidoperationexception

我正在使用Visual Studio Professional 2013,使用WPF在C#中编码。

我正在枚举字典中的条目以连接MySQL查询,但是我的函数不断引发异常

  

“类型'System.InvalidOperationException'的第一次机会异常   发生在mscorlib.dll

     

其他信息:收集已修改;枚举操作   可能不会执行。“

我做了一些研究,我发现此例外的唯一案例涉及尝试在枚举时添加或删除集合。在我的情况下,我甚至没有更改条目,更不用说添加或删除集合。有没有人看到我在这里失踪的东西?我甚至尝试在枚举之前锁定该集合,但没有成功。

代码:

 public void UpdateGenericIndexed(Dictionary<string,string> tags)
    {
        lock (tags)
        {
            bool failed = false;
            StringBuilder sb = new StringBuilder();     
            StringBuilder cmdEnd = new StringBuilder();

            if (tags.Count != 0)
            {
                foreach (KeyValuePair<string, string> entry in tags) //Exception is thrown here
                {
                    if (entry.Key != null && entry.Value != null && !failed)
                    {
                        sb.Append("when \"");
                        sb.Append(entry.Key.ToString());
                        sb.Append("\" then \"");
                        sb.Append(entry.Value.ToString());
                        sb.Append("\" ");
                        cmdEnd.Append("\"");
                        cmdEnd.Append(entry.Key.ToString());
                        cmdEnd.Append("\",");
                        failed = false;
                    }
                    else
                        failed = true;
                }

定时调用此命令。在尝试调试时我也注意到有时,不知何故代码执行超过条件检查字典计数但是代码停止时计数显示为0

This Picture shows a screenshot of the fault _count=85, but tags.Count and tags_temp.Count both equal Zero. How is that possible?

感谢您的帮助,这是我的第一篇文章,所以如果我偏离了任何格式规则,请提前道歉。

0 个答案:

没有答案