如何停止Observable.Timer()



如果一个Observable是用Observable.Timer()创建的,你该如何阻止它呢?

let tmr = Observable.Timer(TimeSpan.Zero, TimeSpan.FromMilliseconds 1000.)
let subscription = tmr.Subscribe(myFunction)
// ...
subscription.Dispose()

你甚至需要停止它,或者当它的所有订阅者都被处理掉时,它会被垃圾收集吗?

计时器甚至没有开始"点火";直到你订阅了它(你会称之为"冷观察")。此外,它将开始发射多少次就发射多少次。试试这个:

let tmr = Observable.Timer(TimeSpan.Zero, TimeSpan.FromMilliseconds 1000.)
let subscription = tmr.Subscribe(printfn "A: %d")
Thread.Sleep 500
let subscription2 = tmr.Subscribe(printfn "B: %d")

这个程序将打印A: 1,然后是B: 1,然后是A: 2,然后是B: 2,等等-大约每500毫秒。

因此,计时器停止"触发";认购一售出。但只有一个特定的定时器,而不是所有的。

考虑tmr对象的一种方法是将其视为"计时器工厂",而不是"计时器"。div。

相关内容

  • 没有找到相关文章

最新更新