在winform 项目时遇到: 集合已修改;可能无法执行枚举操作的问题 错误原因:当用foreach遍历Collection时,如果对Collection有Add或者Remove或其他类似操作都会有这个错误. 因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误: 正确代码: FormCollection collection = Application.OpenForms; List<Form> frmList = new List&…
public void ForeachDic() { Dictionary dic = new Dictionary(); dic.Add("1", 10); dic.Add("2", 20); dic.Add("3", 30); foreach (KeyValuePair kvp in dic) { Console.WriteLine(String.Format("Key:{0}; Value:{1}", kvp.Key,…
今天编写程序时 修改了list集合 在foreach时报 “集合已修改:可能无法执行枚举操作.”错误. 首先想到的是没有锁定集合对象. 增加了 private readonly object syncRoot = new object(); 所以先尝试 lock(syncRoot){} lock关键字用法,多线程共用对象时,操作对象时锁定对象,这样如果有别的线程访问对象,则自动加入队列等待.确保对象操作过程中准确性. 但是问题依旧,查了一下说foreach是只读的,集合如果变更就会出这个问题 于…
解决办法:使用for循环,而不是foreach循环 例如: ArrayList akeys=new ArrayList(_transmit_tb.Keys); ;p> -;p--) { _transmit_tb.Remove(akeys[p]); } 原因: 1.hashtable存放你放入的值的时候,不是按照你存放顺序放的  所以当你用foreach遍历的时候,就不能保证遍历出来的顺序和你原来存放进去的顺序是一致的. 2.msdn的解释:foreach 语句是对枚举数的包装,它只允许从集合中读…
C#中直接对集合Dictionary进行遍历并修改其中的值,会报错,如下代码就会报错:集合已修改;可能无法执行枚举操作.代码如下 public void ForeachDic() { Dictionary<String, Int32> dic = new Dictionary<String, Int32>(); dic.Add(); dic.Add(); dic.Add(); foreach (KeyValuePair<String, Int32> kvp in dic…
无论是向集合中添加元素还是从集合中删除元素,都会导致集合内部的变化,特别是集合遍历器的变化.例如 List<,,,,}; foreach(int x in list) { list.Remove(x); //将引发异常:{"集合已修改:可能无法执行枚举操作."} } 使用foreach不能执行删除.修改,这是规定.你可以使用for循环遍历修改. 如果你是删除的话,for循环 i 要从大到小,比如: ;i>=;i--){ } 而不是 for(int i=0;i<=50;…
集合已修改,可能无法执行枚举操作.今天在使用foreach遍历的时候出现了这样的错误.查了一下,这个是使用foreach的典型的错误问题问题.foreach在遍历取数据的过程中,枚举器只允许读,不允许更改其中的数据,包括修改删除添加.这种情况下如果需要改动数据,应该使用for遍历. 错误代码 /// <summary> /// 获得表中不含列名id的所有列名 /// </summary> /// <param name="dtCols"></p…
摘要 我相信很多人对这个再熟悉不过了.对已经修改的集合进行操作就会出现这个错. 解决办法 比如有下面的一段代码,我们创建一个集合,并向集合中添加10个数,然后,我们循环再将这些数移除了. static void Main(string[] args) { List<int> lst = new List<int>(); ; i < ; i++) { lst.Add(i); } foreach (var item in lst) { lst.Remove(item); } Co…
foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个问题,就应该使用for循环. https://msdn.microsoft.com/zh-cn/library/ttw7t8t6.aspx…
小结 : foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个问题,就应该使用for循环--- 原因: 当用foreach遍历Collection时,如果对Collection有Add或者Remove操作或者给item某个属性赋值都会有这个错误.因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误,只需要把foreach改为for来遍历就好了. ---然而卵…
出现这个现象的原因是由于线程安全考虑,如果你边对字典循环,又同时移除字典中的某个键值对, 那么将会出现这种错误,解决这种问题的方法是你没次remove某个键值对后需要break结束对字典的循环.…
解决办法: 注意!该方法执行后会导致远程仓库覆盖本地仓库的文件,如果不需要对本地文件进行保存,可以无视,若之后还需要用到,请备份所报错文件! 1.Eclipse中选中项目右键-->Team-->Reset-->将最后一项选为Hard-->Reset -->Yes(若选择该项则同意覆盖本地修改内容) 2.右键-->Team-->Pull…
JAVA枚举相对来说比.NET的枚举功能强大,感觉就像是一种简化版的类对象,可以有构造方法,可以重载,可以继承接口等等,但不能继承类,JAVA枚举在实际开发中应用相当频繁,以下几个封装方法在实际开发中可能用到,希望对新手有些帮助. 首先,新建一个枚举接口,为保证所有继承此接口的枚举value及description一致,便于开发使用,枚举统一接口如下. public interface EnumCommon { public int getValue(); public String getDe…
背景:WindowsService + WCF + NetTcpBinding 之前一直使用http协议模式,改为net.tcp之后隔段时间出现:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作. 127.0.0.1:9000 记录时间:-- :: 日志级别:Exception 日志位置:CloudTraPlatSOA.Abstract.AbInSideSMS 当 前 行: 方法名称: SendMessageInfo 日志描述:发送到[*******]短信失败,内容:高兴的通知您:已经成…
今天上午,一个同事反映:某系统的某个通过socket来进行通信的服务无法连接上数据库里,在操作系统上用数据库的客户端测试数据库连接也出现这样的错误信息:Error is 10055 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作. 经过检查,发现该程序是部署在一个前置机上,上边有一个通过SOCKET提供服务的程序,由于网络方面及程序设计本身存在一定缺陷,导致该程序需要通过一个小脚本来定时触发一次交易,以保障会话不会被超时断开.就这样,服务器上就会不断的有新的产生,由于程序或操作系统本身…
今天测试反应了一个问题,说接口返回的速度变慢了,并且返回的数据也不对.然后就找到了我o(╥﹏╥)o. 第一个反应就是查日志,不查不要紧,一查吓一跳,整个服务器上所有的站点都报错了.异常信息如下: System.AggregateException: One or more errors occurred. ---> System.Net.Sockets.SocketException: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作. 看着信息的提示应该是socket资源被耗尽了.第一…
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-9  关联实体过滤和排序 问题 你有一实体的实例,你想加载应用了过滤和排序的相关实体. 解决方案 假设你有如图5-24所示的概念模型 图5-24 一个酒店预定系统的模型 假设我们有一个酒店(Hotel)实体,使用代码清单5-22,获取酒店的商务套房(executive suite),查看是否被预定,并按房价排序. 代码清单5-22.通过方法Entry()和Query()显式加载实体集合,…
编写Shell程序 执行Shell程序 Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂.Shell程序是指放在一个文件中的一系列Linux命令和实用程序.在执行的时候,通过Linux操作系统一个接一个地解释和执行每条命令.首先,来编写第一个Shell程序,从中学习Shell程序的编写.修改权限.执行过程. 2.1 编辑Shell程序 编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下. [root@localhost bin]#vi d…
公司之前有这样一个业务需求: 一名同事做出文件a0和b0,然后将a0加密为a1.b0加密为b1:再将文件a0.a1.b0和b1上传至服务器M:同时要将服务器N上的数据表添加一条记录,该记录的ID就是前面四个文件的文件名(扩展名各不相同).另外说一句,公司网站也在服务器N上,一会儿会用到这点. 公司原来的实现模式是这样的: 程序员小x用VB写了一个软件,能将文本文件生成文件a0,并将文件a0加密为a1,还生成一个access数据库文件,通过软件界面收集到的信息,生成一条记录为稍后向服务器N添加记录…
环境 Oracle 11.2.0 + SQL Plus 问题 根据以下要求编写函数:将scott.emp表中工资低于平均工资的职工工资加上200,并返回修改了工资的总人数.PL/SQL中有更新的操作,执行此函数报如下错误:ORA-16551: 无法在查询中执行 DML 操作. 解决 在声明函数时加上: PRAGMA AUTONOMOUS_TRANSACTION; 并在执行完DML后COMMIT. 操作日志 --登录到Oracle C:\Users\Wentasy>sqlplus wgb SQL*…
最近遇到2个具体的问题: 1.我们有个工程里面有几个外部jar包,这几个jar包经常会更新,更新的时候如果是在eclipse中执行的,由于windows文件机制,所以会报错无法覆盖这几个jar包.虽然git pull失败了,但是却出现了一个很严重的问题,就是许多未修改的文件被标记为已修改,另一个同事改的许多文件都变成了空文件.这个问题出现过2次,最后都是以手工reset + 手工合并的方式解决的问题. 2.今天我新增了一部分源码,同时在pom文件中引入了一个我自己的jar包,在commit后进行…
依据前文:Linux下Zabbix5.0 LTS监控基础原理及安装部署(图文教程) 环境,继续添加MySQL应用集. 第一部分:添加Zabbix自带的MySQL应用集. 在ZabbixClient-01上操作.[官方rpm下载] # 检查是否已安装MySQL,反之下载安装 [root@ZabbixClient-01 ~]# rpm -qa | grep mysql [root@ZabbixClient-01 ~]# wget https://repo.mysql.com/yum/mysql-5.…
创建临时表,往临时表插入数据的时候报的错误. 一开始提示没有打开主键,后来打开主键就提示上述错误异常. 从网上查找资料没有找到,然后又到群里问各位大牛,一位大牛告诉我是没有设置主键. 我又仔细看看提示,恍然大悟,我就给临时设置了主键. 没有主键之前的代码: CREATE TABLE #TT( CourseId INT , UserId INT, ClassId INT ) INSERT INTO #TT ( CourseId, UserId, ClassId ) SELECT CourseId,…
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper…
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.本文中使用到的测试环境是上一篇博文中的测试环境. 一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.…
第一步,首先我们点开开始按钮菜单,要右键以“管理员身份”打开CMD“命令提示符”并键入或者复制(粘贴)命令:netsh wlan show drivers 查看本机无线网卡是否支持此项Wifi热点共享上网功能(特别备注:如果显示“支持的承载网络:是”则表示支持此功能:反之则不支持),如图一所示! 图一 第二步,继续键入或者粘贴命令:netsh wlan set hostednetwork mode=allow ssid=223 key=123456789 (特别备注:其中“223”表示网络名称,…
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.本文中使用到的测试环境是上一篇博文中的测试环境. 一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1<?xml version="1.0" encoding="…
一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-ma…
执行网络操作是耗时操作,即便是在service中也要放到子线程中执行 这里我用到了async-http-client框架来执行异步请求操作 计时用的java原生Timer和TimerTask类 本来这两者分开操作各没有问题 但是如果把异步操作写到TimerTask的run方法里就会出错 E/AndroidRuntime(5799): java.lang.IllegalArgumentException: Synchronous ResponseHandler used in AsyncHttpC…
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.本文中使用到的测试环境是上一篇博文中的测试环境. 一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0" encoding=&quo…