将ConcurrentQueue公开为IObservable?

我想知道是否可以使用队列(特别是ConcurrentQueue)作为IObservable的源?就像是;

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

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

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

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

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

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

点赞