使用Rx .NET在3秒后引发火灾并忘记回调的最简单方法是什么。我注意到这个有效,但是我必须处理它还是什么?我不确定。
Observable.Timer(TimeSpan.FromSeconds(3)).Subscribe(x => Console.WriteLine("Fired"));
答案 0 :(得分:4)
就是这样,如果可以,我会将你的问题标记为答案;)。
关于处置,您通常需要在以下情况下处置订阅:
您的样本不是其中之一,所以不要担心取消订阅。
答案 1 :(得分:0)
仅仅是为了踢,这是另一种使用Rx的替代方案,但是将调度程序放在前面和中心,省略了订阅业务和Action上不必要的参数。和以前一样,您可以使用返回的IDisposable
取消操作。:
Scheduler.Default.Schedule(TimeSpan.FromSeconds(3), () => Console.WriteLine("Fired"));
答案 2 :(得分:0)
好奇,但你的问题是'超时',而不是'计时器'。你所拥有的是在给定时间发生的事件,而不是在给定时间之后事件放弃的等待。虽然看起来你对答案很满意,但我想我会检查清楚。
要执行稍后操作,可以将.Timeout(Timespan)添加到可观察序列。正如詹姆斯世界提到的那样,隐含地有一个调度程序在这里发挥作用。当你隐藏Scheduler时,你会发现单元测试很痛苦。理想情况下,您应该将要使用的调度程序提供给您使用的定时器/间隔/超时方法。