C# 集合已修改。枚举操作不能执行 Dictionary urlsLimited=newdictionary(); 结构lim { 公共int min; 公共整数最大值; } foreach(urlsLimited中的KeyValuePair对) { if(urlsLimited[pair.Key].min

C# 集合已修改。枚举操作不能执行 Dictionary urlsLimited=newdictionary(); 结构lim { 公共int min; 公共整数最大值; } foreach(urlsLimited中的KeyValuePair对) { if(urlsLimited[pair.Key].min,c#,C#,在foreach I receive集合的第一个循环被修改之后。枚举操作不能执行。如何摆脱它?既然您没有更改键,也许您可以尝试以下方法: Dictionary<string, lim> urlsLimited = new Dictionary<string, lim>(); struct lim { public int min; public int max; } foreach (KeyValuePair<string, lim> pa

在foreach I receive集合的第一个循环被修改之后。枚举操作不能执行。如何摆脱它?

既然您没有更改
键,也许您可以尝试以下方法:

Dictionary<string, lim> urlsLimited = new Dictionary<string, lim>();
struct lim
{
    public int min;
    public int max;
}


foreach (KeyValuePair<string, lim> pair in urlsLimited)
{
    if (urlsLimited[pair.Key].min < urlsLimited[pair.Key].max)
    {
        string like = od.LikeDiscussions(pair.Key);
        if (like == "Like")
        {
            lock (locker)
            {
                good_like++;
                lim val = pair.Value;
                val.min++;
                urlsLimited[pair.Key] = val;
                log_good_like(good_like);
            }
        }
     }
}
foreach(urlsLimited.Keys中的var键)
{
if(urlsLimited[key].min
这将解决您的问题:
foreach(urlsLimited.ToArray()中的KeyValuePair对)
您必须停止修改foreach循环中的集合。您正在修改字典条目
urlsLimited[pair.Key]=val在枚举期间。这是不允许的。在枚举字典时不要修改它
foreach (var key in urlsLimited.Keys)
{
    if (urlsLimited[key].min < urlsLimited[key].max)
    {
        string like = od.LikeDiscussions(key);
        if (like == "Like")
        {
            lock (locker)
            {
                good_like++;
                lim val = pair.Value;
                val.min++;
                urlsLimited[key] = val;
                log_good_like(good_like);
            }
        }
     }
}