Это безопасный способ итерации ConcurrentQueue<T>?
ConcurrentQueue<T>
while (cq.GetEnumerator().MoveNext()) { IIndexTask task; if (cq.TryDequeue(out task)) task.Execute(service); }
Просто сделай это вместо ...
IIndexTask task; while (cq.TryDequeue(out task)) { task.Execute(service); }