Вчера узнал о существовании такой штуки, как Channel<T>. Долго думал, чем сценарии его применения отличаются от сценариев применения BlockingCollection<T>. А сегодня залез в доку последней, а там в последнем абзаце прямо написано, что блокирующая коллекция не поддерживает асинхронные сценарии (!), и для асинхронных сценариев используйте Канал.
Штош.