5

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

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

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

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

我会对有关如何实施的任何建议感兴趣。谢谢!

4

1 回答 1

3

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

如何使用 RX 实现单工作者消费者生产者队列?

于 2010-02-15T08:20:37.613 回答