【发布时间】:2020-02-26 06:54:17
【问题描述】:
我有一个服务返回 Subject<T> 并且消费者正在订阅它。
我将如何取消现有订阅并将其处理掉?
【问题讨论】:
-
是你的代码订阅了,还是你想退订别人的订阅?
标签: c# system.reactive
我有一个服务返回 Subject<T> 并且消费者正在订阅它。
我将如何取消现有订阅并将其处理掉?
【问题讨论】:
标签: c# system.reactive
当您在Subject<T> 上调用Subscribe() 时,它会返回一个IDisposable。只需在返回的句柄上调用 Dispose(),它就会取消订阅。
【讨论】:
Subject<T>,就其本身而言,不是一次性的。 (当然,一个特定的可能是)。处理订阅通常很重要,因为这就是你停止监听的方式 - 但如果它在你的设计中非常解耦,GC 可能会为你处理它......
Subscribe 返回的IDisposable 实例的范围不调用实现 Disposable 模式的终结器部分(否则,只要您不存储该值,订阅就会被取消)。我同意@Jim 的观点,因为应该优先将序列的终止组合到序列本身中。