Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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);
            }
        }
     }
}

after first loop of foreach I receive Collection was modified. Enumeration operation may not execute. How to get out of it?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
204 views
Welcome To Ask or Share your Answers For Others

1 Answer

Since you are not changing the Keys, maybe you can try this:

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);
            }
        }
     }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...