【问题标题】:RX Subject<T> How To Cancel a SubscriptionRX Subject<T> 如何取消订阅
【发布时间】:2020-02-26 06:54:17
【问题描述】:

我有一个服务返回 Subject&lt;T&gt; 并且消费者正在订阅它。 我将如何取消现有订阅并将其处理掉?

【问题讨论】:

  • 是你的代码订阅了,还是你想退订别人的订阅?

标签: c# system.reactive


【解决方案1】:

当您在Subject&lt;T&gt; 上调用Subscribe() 时,它会返回一个IDisposable。只需在返回的句柄上调用 Dispose(),它就会取消订阅。

【讨论】:

  • 感谢里德。处置和创建主题的效率如何,这是我的基于 RX 的搜索控件的流程....跨度>
  • @Andy: Subject&lt;T&gt;,就其本身而言,不是一次性的。 (当然,一个特定的可能是)。处理订阅通常很重要,因为这就是你停止监听的方式 - 但如果它在你的设计中非常解耦,GC 可能会为你处理它......
  • @Andy,如果您在用户再次搜索时尝试中止搜索,请不要丢弃它,考虑使用 TakeUntil。您可能需要通过动手实验室来获得有关使用其字典中的服务的建议建议示例。
  • Subscribe 返回的IDisposable 实例的范围不调用实现 Disposable 模式的终结器部分(否则,只要您不存储该值,订阅就会被取消)。我同意@Jim 的观点,因为应该优先将序列的终止组合到序列本身中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2012-03-14
  • 2019-12-05
  • 1970-01-01
相关资源
最近更新 更多