C# IObservable.为可变间隔生成
我对使用这个系统还很陌生。反应性很强,不知道我的解决方案是否可以改进。我需要按前一个事件确定的时间间隔订阅一组无休止的事件。我在这里看到了使用C# IObservable.为可变间隔生成,c#,system.reactive,C#,System.reactive,我对使用这个系统还很陌生。反应性很强,不知道我的解决方案是否可以改进。我需要按前一个事件确定的时间间隔订阅一组无休止的事件。我在这里看到了使用IObservable.Generate的其他解决方案,并提出了以下方法,但这是一个好的实践吗 IDisposable updateJob = Observable.Generate( true, _ => true, _ => CheckForUpdate(), _ => _, _ =>
IObservable.Generate
的其他解决方案,并提出了以下方法,但这是一个好的实践吗
IDisposable updateJob = Observable.Generate(
true,
_ => true,
_ => CheckForUpdate(),
_ => _,
_ => NextCheck()).Subscribe();
其中
NextCheck()。。。耸肩另一方面
应该有点像for循环,内置了可选的时间间隔。因此,如果您想迭代整数1-10,在每次迭代之间暂停i*100毫秒,您可以这样做:
var forLoop = Observable.Generate(
1,
i => i <= 10,
i => i + 1,
i => i,
i => TimeSpan.FromMilliseconds(i * 100)
)
但是你必须实现这些方法,而且你有一点不必要的意大利面
您的代码看起来更像后者而不是前者。这可能是必要的,取决于你的问题,我真的不知道
您可以清楚地做的一件事是将迭代器类型替换为Unit
,将值替换为Unit.Default
。因为您根本没有使用该值,所以最好使用一个明确的无用值来说明这一点。感谢您提供的示例-帮助我了解我正在使用的内容。
var opaqueForLoop = Observable.Generate(
GetFirstValue(),
_ => CheckIfDone(),
_ => GetNextValue(),
i => SaveCurrentValue(i),
_ => GetNextTimespan()
)