gpt4 book ai didi

c# - 响应式(Reactive)可观察订阅 : Stop Subscription and Renew Subscription

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:03 26 4
gpt4 key购买 nike

我有一个来自 BlockCollection 的 Observable,我像队列一样使用它

IObservable<ProcessHoldTransactionData> GetObservable()
{
_queue.GetConsumingEnumerable().ToObservable(TaskPoolScheduler.Default);
}

并订阅他:

void StartSubscription()
{
_subscription = = GetObservable().Subscribe(
data => OnNextSubscribe(data),
ex => _logger.Error("Error"),
() => _logger.Warn("Complete"));
}

现在我有另一个 Observable:

var timer = Observable.Interval(TimeSpan.FromSeconds(60));
_subscriptionTimer = timer.Subscribe(tick =>
{
OnTimerNextSubscribe();
});

我希望当 OnTimerNextSubscribe 开始停止订阅 _subscription 并在 OnTimerNextSubscribe 完成时更新它。

最好的做法是什么?
我应该处理 _subscription 并调用 StartSubscription()

最佳答案

基本上有两种选择:一种是处理然后重启,另一种是创建某种可观察的开/关信号,然后相应地过滤_subscription:

void StartSubscription(Observable<bool> onOffSignal)
{
_subscription = = GetObservable()
.WithLatestFrom(onOffSignal, (s, b) => b ? Observable.Return(s) : Observable.Empty(s))
.Merge()
.Subscribe(
data => OnNextSubscribe(data),
ex => _logger.Error("Error"),
() => _logger.Warn("Complete")
);
}

关于c# - 响应式(Reactive)可观察订阅 : Stop Subscription and Renew Subscription,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41662817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com