Возможно использовать перегрузку 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