gpt4 book ai didi

c# - 响应式扩展 - 中止/取消 OnCompleted

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

我有一个显示状态消息的控件;控件在一段时间后隐藏。这是处理它的代码:

private void ShowFor(TimeSpan? delay)
{
Visible = true;

if (!delay.HasValue) return;

// _pauseTimer is a MultipleAssignmentDisposable
_pauseTimer.Disposable = Observable
.Timer(delay.Value)
.ObserveOn(SynchronizationContext.Current)
.Subscribe(
onNext: _ => { /* do nothing */ },
onCompleted: () => { Visible = false; },
onError: e => { /* what could possibly go wrong? */});
}

显示控件,等待 n 秒,隐藏控件。十分简单。

问题是当另一条消息在这个计时器到时之前进来时该怎么办。第二条消息显示,然后第一个计时器到期并过早隐藏控件。

如何“中止”前一个计时器?处理 pauseTimer.Disposable

最佳答案

_pauseTimer 更改为 SerialDisposable 而不是 MultipleAssignmentDisposable,然后每次执行 _pauseTimer.Disposable = newDisposable 它将处理当前订阅以便订阅下一个。

关于c# - 响应式扩展 - 中止/取消 OnCompleted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123468/

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