Как очистить / очистить BlockingCollection в c # - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть тема, которая добавляет элементы в коллекцию BlockingCollection. Я хочу очистить коллекцию BlockingCollection. Может ли кто-нибудь помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Возможно использовать перегрузку GetConsumingEnumerable, которая занимает CancellationToken;, тогда, если что-то пойдет не так со стороны производителя, это может отменить потребителя.

И вы можете использовать его

 public static void Clear<T>(this BlockingCollection<T> blockingCollection)
{
    if (blockingCollection == null)
    {
        throw new ArgumentNullException("blockingCollection");
    }

    while (blockingCollection.Count > 0)
    {
        T item;
        blockingCollection.TryTake(out item);
    }
}

И вы даже можете использовать этот сайт

Используйте ForEach для удаления элементов в BlockingCollection

0 голосов
/ 11 ноября 2019

Возможно, вам потребуется прочитать все элементы из коллекции BlockingCollection и назначить Discards

while (collection.TryTake(out _)){}
...