Никогда не делайте никаких выводов на основе сеанса отладки, сначала изучите источник.
Рассмотрите информацию о классе для BufferBlock<T>
public IEnumerable<T> Queue { get { return _sourceDebuggingInformation.OutputQueue; } }
Как видитесвойство Queue
, полученное здесь из поля отладочной информации .
Давайте еще раз посмотрим на этот класс :
internal IEnumerable<TOutput> OutputQueue { get { return _source._messages.ToList(); } }
СноваКак видите, это , а не очередь на основе списка, это очередь, преобразуемая в список для отладки .
Наконец, давайте посмотрим, какой тип имеет_messages
поле.Это SingleProducerSingleConsumerQueue<T>
, который работает именно так, как и должен.