一、问题
public Dictionary<int, ClientSocket> clientDic = new Dictionary<int, ClientSocket>();
private void Receive(object obj)
{
while (!isClose)
{
if(clientDic.Count > 0)
{
foreach (ClientSocket client in clientDic.Values)
{
client.Receive();
}
}
}
}
出现报错信息:Collection was modified; enumeration operation may not execute
意思是:集合已修改;枚举操作可能无法执行
二、解决方法
使用for循环进行字典的遍历
//需要引入一个新的命名空间
using System.Linq
public Dictionary<int, ClientSocket> clientDic = new Dictionary<int, ClientSocket>();
private void Receive(object obj)
{
while (!isClose)
{
if(clientDic.Count > 0)
{
for(int i=0;i<clientDic.Count;i++)
{
ClientSocket client=clientDic.ElementAt(i).Value;
client.Receive();
}
}
}
}