我想知道是否可以使用队列(特别是ConcurrentQueue)作为IObservable的源代码?喜欢的东西;
Queue = new ConcurrentQueue<IMessage>();
var xs = Queue.AsEnumerable().ToObservable();
xs.Subscribe((IMessage msg) =>
{
Console.WriteLine("Msg :" + msg.subject);
});
我认为它没有任何意义,因为没有任何东西出现。我正在尝试实现一个非阻塞进程,它可以订阅被推送给观察者的“消息”,从而使用队列。我确信我应该能够用RX做到这一点,但似乎无法理解它!
我对如何实施这些建议感兴趣。谢谢!
答案 0 :(得分:2)
你是对的,转换队列(并发或简单,无关紧要)只会枚举它,但不会排队。 “真正的”实现是可能的,但更复杂 - 请参阅我在RX论坛上提出的类似问题的链接(与StackOverflow相比,它仍然是RX的更好信息来源):
How to implement a single worker consumer producer queue using RX?