Ich habe eine Reihe von IDs, auf die ich einige Operationen ausführen:Gibt es etwas wie eine erweiterbare Warteschlange in C#?
Queue<string> queue = new Queue<string>();
queue.Enqueue("1");
queue.Enqueue("2");
...
queue.Enqueue("10");
foreach (string id in queue)
{
DoSomeWork(id);
}
static void DoSomeWork(string id)
{
// Do some work and oooo there are new ids which should also be processed :)
foreach(string newID in newIDs)
{
if(!queue.Contains(newID)) queue.Enqueue(newID);
}
}
Ist es möglich, einige neue Elemente zu queue
in DoSomeWork()
hinzuzufügen, die auch bei der Haupt foreach-Schleife verarbeitet werden?
Wie wird diese Arbeit mit einem HashSet? –
Makara
@Makara Ein Beispiel hinzugefügt, in dem ich eine Warteschlange verwende, um die unverarbeiteten Elemente zu speichern, und ein HashSet, um Duplikate zu vermeiden. – CodesInChaos