Ich versuche Elemente zu entfernen, wenn sie eine bestimmte Zeichenfolge enthalten. Das ist die Idee, die ich arbeiten würde hatte gehofft, aber nicht:Wie kann ich ein Element bei einem bestimmten Index in einer String-Warteschlange entfernen?
Dim baseUri As String = myuri.GetLeftPart(UriPartial.Authority)
For i = workerURLs.Count - 1 To 0 Step -1
If workerURLs(i).Contains(baseUri) Then
workerURLs.Dequeue(i)
End If
Next
Da die Warteschlange Methode keine „Dequeue bei Index“ Option wie eine Liste würde wie kann ich das erreichen?
So funktioniert eine 'Queue' nicht. Sie sollten stattdessen eine 'List' verwenden, wenn Sie die Sammlung bei beliebigen Indizes manipulieren möchten. –
Die Warteschlange wird ständig von Hintergrundarbeitern überprüft und ist ziemlich lang. Grundsätzlich versuche ich, Benutzer in die Lage zu versetzen, große Teile der Warteschlangenstrings zur Laufzeit zu entfernen, während die Hintergrund-Workers auf die Warteschlange zugreifen. Wenn ich die Warteschlange in eine Liste umwandeln würde, filtere sie und setze dann die Warteschlange als diese Liste, was meiner Meinung nach Probleme verursachen würde. Vielleicht ist das, was ich zu erreichen versuche, nicht möglich oder gar keine gute Idee. –
@ZachJohnson es klingt wie Sie brauchen eine hybride Sammlung, solche eigenartige Implementierung existiert nicht im Rahmen, aber Sie können es leicht selbst implementieren. Der einfachste Weg (nicht der sauberste) ist, die Queue zu erben. Wenn Daten in die Warteschlange gestellt werden, fügt man sie auch einer indexierbaren Sammlung hinzu und erzeugt eine Überladung der Dequeue-Methode ... –