Collection was modified; enumeration operation may not execute.的异常处理

Collection was modified; enumeration operation may not execute.的异常处理

在运行程序时遇到这样一段异常,仔细检查后发现是使用Foreach...In语法体内运用了对Collection的Remove或Add导致的,只需要将foreach方法改为for方法即可。

    for (int i = 0; i < this.prtdeallist.Items.Count; i++)
            {
                RepeaterItem repeaterItem = this.prtdeallist.Items[i];

                if (repeaterItem.ItemType == ListItemType.Item || repeaterItem.ItemType == ListItemType.AlternatingItem)
                {
                    HtmlInputCheckBox cbDealIsSelected = repeaterItem.FindControl("ckPpGuid") as HtmlInputCheckBox;
                    HiddenField hfDealGuid = repeaterItem.FindControl("HiddenField2") as HiddenField;
                    if (cbDealIsSelected.Checked )
                    {
                        DTDealItemWrapper DealItem = DTDealItemWrapper.FindById(hfDealGuid.Value);
                        DTDealWrapper DTdeal = null;
                        if (DealItem == null)
                        {
                            DTdeal = DTDealWrapper.FindById(hfDealGuid.Value);
                        }
                        if (DealItem != null)
                        {
                            DealItem.DDICRMReportStatus = false;
                            DTDealItemWrapper.Update(DealItem);
                            string LineCode = "LineCode:" + DealItem.DDILineCode;
                            RecordDeleteLog(hfDealGuid.Value, LineCode);
                        }
                        else if (DTdeal != null)
                        {
                            DTdeal.DDCRMReportStatus = false;
                            DTDealWrapper.Update(DTdeal);
                            string LineCode = "DD_NO:" + DTdeal.DDNo;
                            RecordDeleteLog(hfDealGuid.Value, LineCode);
                        }

                    }

                }
            }

  

时间: 2024-10-25 12:25:48

Collection was modified; enumeration operation may not execute.的异常处理的相关文章

3.C#/.NET编程中的常见异常(持续更新)

1.Object reference not set to an instance of an object. 未将对象引用(引用)到对象的实例,说白了就是有个对象为null,但是你在用它点出来的各种东西. 2.An entity object cannot be referenced by multiple instances of IEntityChangeTracker. 一个实体对象不能由多个IEntityChangeTracker实例引用.首先参见MSDN中对于Entity Frame

错误提示总结

当用foreach遍历Collection时,如果对Collection有Add或者Remove操作时,会发生以下运行时错误: "Collection was modified; enumeration operation may not execute." 如下所示: 究其原因,是因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误,只需要把foreach改为for来遍历就好了.

删除程序池

网上新建程序池的方法很多,唯独删除程序池方法比较少,所以我记录下删除程序池的方法. 网上找到这种 /// <summary>           ///     删除指定程序池  -虚拟机上跑不通         /// </summary>           /// <param name="appPoolName">程序池名称</param>           /// <returns>true删除成功 false删除

C# 使用Linq递归查询数据库遇到的问题及解决方法

User表通常是我们在写"XX管理系统"项目时必须要用到的,有的情况下人员的分类属于树形结构,就是除了最高层和最低层,中间层都有相对的父和子,设计数据库的时候,我们通常会加一个parent_id这样的字段.这样我们就可以通过当前用户的user_id查询出他的直接下属有哪些,或者通过parent_id查询出他的直接上司是谁. 但是当我们想通过user_id去查询出其所有下属的时候,就不是能用一条简单的sql能实现的了.如果项目要是.Net Framework3.5以下的,就是没有Linq

C#在foreach循环中修改字典等集合出错的处理

C#在foreach循环中修改字典等集合出错:System.InvalidOperationException: Collection was modified; enumeration operation may not execute.这是因为在foreach中不允许修改集合,可通过如下方式修改dictPublish的值,如: Dictionary<string, string> _dict = new Dictionary<string, string>(dictPublis

2.变量表达式及流程控制

这个是C#入门经典的第三章和第四章.第二章介绍的是VS2010的基础知识,表示已阅.吃过午饭以后再楼下摔瓶子发泄了一会儿,心情平静了一点点. 1.C#编译器不考虑代码中的空白字符:空格.回车或tab.这个是编译器做的比较好的一点,可以自由的控制缩进和换行等等排版问题,我又要说之前写cache的时候最后一行多敲一个回车花两天找错的故事了. 2.注释的三种方式://,///,/**/.他们有各自的应用场合,三道杠大致是说明.关键信息摘要.变量提示等等,IDE在编译项目的时候会自动提取注释中的文本,创

java collection 集合源码分析(一)

collection 为java集合的接口,collection的接口继承Iterable public interface Collection<E> extends Iterable<E> 没有自己在画类图了 找到网上有大哥画的关系图如下 上图中有个位置可能错了,AbstrctList应该继承自 public abstract class AbstractList<E> extends AbstractCollection<E> implements L

NTSTATUS Values

By combining the NTSTATUS into a single 32-bit numbering space, the following NTSTATUS values are defined. Most values also have a defined default message that can be used to map the value to a human-readable text message. When this is done, the NTST

ExecutorService.invokeAny()和ExecutorService.invokeAll()的使用剖析

ExecutorService是JDK并发工具包提供的一个核心接口,相当于一个线程池,提供执行任务和管理生命周期的方法.ExecutorService接口中的大部分API都是比较容易上手使用的,本文主要介绍下invokeAll和invokeAll方法的特性和使用. package tasks; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; public class SleepSecondsC