- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试弄清楚如何在 IConnectableObservable
完成或出错后“重新启动”它。
下面的代码显示了一个可连接的可观察对象的两个订阅者(A,B)。一旦他们的订阅被处置,一个新的订阅者 (C) 就会连接。我希望它在 C 看来是一个全新的可观察对象,但我只在第一次订阅时收到异常。
static void Main(string[] args)
{
var o = Observable.Create<string>(observer =>
{
observer.OnNext("msg");
observer.OnError(new Exception("boom"));
return Disposable.Create(() => {
Console.WriteLine("Observer has unsubscribed");
});
}
)
.Publish();
o.Subscribe(
x => Console.WriteLine("A: " + x),
ex => Console.WriteLine("A: " + ex),
() => Console.WriteLine("A: done"));
o.Subscribe(
x => Console.WriteLine("B: " + x),
ex => Console.WriteLine("B: " + ex),
() => Console.WriteLine("B: done"));
var subscription = o.Connect();
subscription.Dispose();
o.Subscribe(
x => Console.WriteLine("C: " + x),
ex => Console.WriteLine("C: " + ex),
() => Console.WriteLine("C: done"));
subscription = o.Connect();
}
给出以下结果:
A: msg
B: msg
A: System.Exception: boom
B: System.Exception: boom
Observer has unsubscribed
C: System.Exception: boom
Observer has unsubscribed
而我想:
A: msg
B: msg
A: System.Exception: boom
B: System.Exception: boom
Observer has unsubscribed
C: msg
C: System.Exception: boom
Observer has unsubscribed
有什么想法吗?谢谢!
最佳答案
虽然它不会“重启”可观察对象,但将 Publish
替换为 Replay
提供您期望的输出。但是,请记住,这将缓冲来自源可观察对象的所有值。最好限制重播值的数量。
关于c# - 是否可以重新启动 IConnectableObservable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47739717/
我正在尝试编写一个方法,该方法接受一个 IConnectableObservable,对其进行一些处理并返回一个新的 IConnectableObservable,该 IConnectableObse
我正在尝试弄清楚如何在 IConnectableObservable 完成或出错后“重新启动”它。 下面的代码显示了一个可连接的可观察对象的两个订阅者(A,B)。一旦他们的订阅被处置,一个新的订阅者
有人可以解释一下 Observable 和 ConnectableObservable 之间的区别吗? Rx 扩展文档非常稀疏,我不明白 ConnectableObservable 在什么情况下有用。
我在尝试处理最坏的情况时偶然发现了一个问题;在完成之前处理具有订阅的 IConnectableObservable。 我编写了一个人为的示例来重现该问题。 var hotSource = Observ
我是一名优秀的程序员,十分优秀!