Я использую Winforms и таргетинг .Net 4.5Как повторно повторять параллельную очередь?
Я хочу перебирать параллельную очередь до тех пор, пока у нее есть элементы. В моем приложении пользователь может добавлять и удалять элементы в параллельную очередь в любой момент.
Пример кода:
ConcurrentQueue<string> cq = new ConcurrentQueue<string>();
cq.Enqueue("First");
cq.Enqueue("Second");
cq.Enqueue("Third");
cq.Enqueue("Fourth");
cq.Enqueue("Fifth");
private void someMethod(string)
{
//do stuff
}
while (!cq.IsEmpty)
{
//how do I do the code below in a loop?
//inner loop starts here
someMethod(current cq item);
//move to the next item
someMethod(the next cq item);
//move to the next item
someMethod(the next cq item);
.
.
.
//if last item is reached, start from the top
}
Имейте в виду, что пользователь приложения может добавлять или удалять элементы из очереди в любое время, даже когда цикл, пока работает.
Что произойдет, если предположим, что ваш параллельный вызов пуст (все предметы расходуются), а новый элемент добавлен? Должно ли оно потребляться автоматически по вашим требованиям? – Michael
Я даже не думал об этом далеко, но да. Возможно, я смогу решить это с помощью таймера, который проверяет, имеет ли коллекция элементы, и если это так, запустите цикл, если он еще не запущен. –