Ben Foster
Ben Foster

Reputation: 34800

Iterating ConcurrentQueue<T>

Is this a safe way of iterating ConcurrentQueue<T>?

while (cq.GetEnumerator().MoveNext())
{
    IIndexTask task;
    if (cq.TryDequeue(out task))
        task.Execute(service);
}

Upvotes: 3

Views: 4503

Answers (1)

LukeH
LukeH

Reputation: 269328

Just do this instead...

IIndexTask task;
while (cq.TryDequeue(out task))
{
    task.Execute(service);
}

Upvotes: 9

Related Questions