我有一個顯示狀態消息的控件;該控件在間隔後隱藏。這裏是處理它的代碼:無效擴展 - 中止/取消完成
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? */});
}
顯示控制,等待ñ秒,隱藏控制。十分簡單。
問題是在此計時器過去之前另一條消息進入時該怎麼辦。第二條消息顯示,然後第一個定時器到期並提前隱藏控件。
如何「中止」前一個計時器?處置pauseTimer.Disposable
?
我甚至從來沒有想過讓消息成爲一個序列本身;非常聰明。我看到的唯一問題是,消息會因嚴重程度而異,而且並不都顯示相同的時間量 - 有些則需要手動解散。你會如何彌補? –
編輯以反映您的意見,並處理不同的嚴重程度。 –