【问题标题】:Subjects vs Publish主题与发布
【发布时间】:2012-02-14 15:55:08
【问题描述】:

我在最后一天左右一直在玩 Rx,但对我来说仍然不太有意义的一件事是 Subject。

什么时候可以直接使用这个类?

在我看来,我更有可能公开一个 IObservable 并使用 Publish 方法来创建一个 IConnectableObservable。然后,我可以选择使用 RefCount 转换回监视其订阅者的 IObservable。

我确定我在这里遗漏了一些东西。如果您有任何见解,我将不胜感激。

谢谢

【问题讨论】:

    标签: linq c#-4.0 system.reactive


    【解决方案1】:

    您是正确的,直接公开主题不太可能是您想要的。通常,您会在内部使用 Subject 并将其公开为 IObservable。 this question 是您可能执行此操作的一个示例。

    【讨论】:

      【解决方案2】:

      我也是 Rx 的新手,但我已经将它们用于具有热可观察对象的类。即。

      class NumberMonitor
      {
        Subject<double> _source = new Subject<double>();
        public IObservable<double> NumberStream {get {return _source.AsObservable; } }
      
        void OnSomeEvent(object sender, EventArgs e)
        {
          _source.OnNext(1);
        }
      }
      

      【讨论】:

      • 是的 - 一个 Subject 是最直接的 IObservable,它只是一个像上面那样手动发出信号的对象
      【解决方案3】:

      我在 ViewModel 类内部使用 AsyncSubject 作为某种完成标志作为快速修复,我会说它们看起来比使用 Observable.Create 更干净。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-07
        • 2018-03-01
        • 1970-01-01
        • 2020-10-08
        • 2016-06-17
        • 2021-10-01
        • 2011-08-21
        相关资源
        最近更新 更多