我有一个UnboundedChannel
读者\多个作者,我希望能够使用Count
属性,但由于CanCount
属性始终为 false Count
,因此会引发异常。我应该怎么做才能使它工作,我找不到文档中列出的任何限制。
问问题
87 次
2 回答
3
当UnboundedChannelOptions.SingleReader
属性设置为true
创建时,UnboundedChannel
实现是SingleConsumerUnboundedChannel
. 根据 source,Reader
该类使用的对象在ChannelReader
没有明确设置的情况下扩展,默认CanCount
设置为。false
ChannelReader
不幸的是,所有这些类都是密封的,所以你不能只是扩展它们并Count
自己实现。保留SingleReader
选项 asfalse
将使用UnboundedChannelReader
确实设置CanCount
并true
实现Count
方法的实现。如果您只需要检查队列中是否有更多元素,您也可以使用TryPeek
。
于 2021-12-17T03:54:14.193 回答
1
所有有界通道实现都支持读取Count
,因此如果您需要一个启用的无界通道,您可以只使用配置有最大容量的有界通道SingleReader
。Count
实际上它将是无限的。
var channel = Channel.CreateBounded<int>(
new BoundedChannelOptions(Int32.MaxValue) { SingleReader = true });
Console.WriteLine(channel.Reader.CanCount); // True
于 2021-12-17T10:20:48.557 回答