将ConcurrentQueue <t>公开为IObservable <t>?</t> </t>

时间:2010-02-14 21:32:03

标签: queue c#-4.0 system.reactive

我想知道是否可以使用队列(特别是ConcurrentQueue)作为IObservable的源代码?喜欢的东西;

  Queue = new ConcurrentQueue<IMessage>();
  var xs = Queue.AsEnumerable().ToObservable();

  xs.Subscribe((IMessage msg) =>
     {
        Console.WriteLine("Msg :" + msg.subject);
     });

我认为它没有任何意义,因为没有任何东西出现。我正在尝试实现一个非阻塞进程,它可以订阅被推送给观察者的“消息”,从而使用队列。我确信我应该能够用RX做到这一点,但似乎无法理解它!

我对如何实施这些建议感兴趣。谢谢!

1 个答案:

答案 0 :(得分:2)

你是对的,转换队列(并发或简单,无关紧要)只会枚举它,但不会排队。 “真正的”实现是可能的,但更复杂 - 请参阅我在RX论坛上提出的类似问题的链接(与StackOverflow相比,它仍然是RX的更好信息来源):

How to implement a single worker consumer producer queue using RX?