【发布时间】:2023-03-06 22:36:01
【问题描述】:
我正在研究使用 Reactive Extensions for .NET (Rx) 的东西,我想要一个从队列(或类似队列)获取输入的序列。
我试过这样做:
static readonly Queue<DeviceTransaction> TransactionQueue = new Queue<DeviceTransaction>();
//...
var observableTransactionSource = TransactionQueue.ToObservable();
//...
observableTransactionSource.Subscribe(transactionObserver);
它工作到一定程度,但当队列为空时,序列完成。我不希望空队列结束序列。空并不意味着结束,它只是意味着'此刻没有更多'。
有没有办法在队列为空时停止序列完成,或者我应该以不同的方式考虑整个问题?
【问题讨论】:
-
您需要使用与
Queue不同的集合类型,它会在添加项目时触发事件,例如ObservableCollection或让您等到添加项目,例如BlockingCollection(尽管在您的情况下您希望它是异步的,而不是同步的,因此 BC 并不理想)。
标签: c# system.reactive reactive-programming