Я пытаюсь удалить элементы, если они содержат определенную строку. Это идея, которую я надеялся, что будет работать, но это не так:Как я могу удалить элемент из определенного индекса в очереди строки?
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
Поскольку метод очереди не имеет «DEQUEUE с индексом» вариант как список будет, как я могу это сделать?
Это не так, как работает «Очередь». Вместо этого вы захотите использовать «Список», если хотите манипулировать коллекцией при произвольных индексах. –
Очередь постоянно проверяется работниками фона и довольно длинна. В основном, что я пытаюсь выполнить, пользователи могут деактивировать большие куски строк в очереди во время выполнения, в то время как фоновые рабочие обращаются к очереди. Если бы я должен был преобразовать очередь в список, отфильтруйте ее, а затем установите очередь, так как мне кажется, что это вызывает проблемы. Возможно, то, что я пытаюсь сделать, невозможно или вообще не является хорошей идеей. –
@ ZachJohnson похоже, что вам нужна гибридная коллекция, такая особенная реализация не существует в рамках, но вы можете легко реализовать ее самостоятельно. Самый простой способ (а не самый чистый) - наследовать Очередь, а при данных очередей вы также добавляете их в индексируемую коллекцию и создаете перегрузку метода Dequeue ... –