【问题标题】:Exposing ConcurrentQueue<T> as IObservable<T>?将 ConcurrentQueue<T> 公开为 IObservable<T>?
【发布时间】:2010-02-14 21:32:03
【问题描述】:

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

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

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

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

我对如何实现这一点的任何建议感兴趣。谢谢!

【问题讨论】:

    标签: queue c#-4.0 system.reactive


    【解决方案1】:

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

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

    【讨论】:

    • 感谢 Sergey,确认它并不像我希望的那样交钥匙 :) 我确实在 RX 论坛上找到了您的原始问题,并且 OneByOneTask 确实演示了“Observable.GenerateInSequence”句法。看起来很喜欢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多