使用 rx 以随机时间间隔生成数字 [英] Generate numbers at random time intervals with rx
本文介绍了使用 rx 以随机时间间隔生成数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用 Rx.Net 生成数字列表,例如 0-100,其中每个数字都是随机生成的?
How can I generate a list of number with Rx.Net, like 0-100, where each number is generated at a random time?
看起来像这样
public void NonBlocking_event_driven()
{
var random = new Random();
var ob = Observable.Create<int>(
observer =>
{
timer.Interval = 1000;
timer.Elapsed += (s, e) => observer.OnNext(random.Next(0, 3));
timer.Elapsed += OnTimerElapsed;
timer.Start();
return Disposable.Empty;
});
var subscription = ob.Subscribe(UserAction);
Console.ReadLine();
subscription.Dispose();
}
private void OnTimerElapsed(object sender, ElapsedEventArgs e)
{
var random = new Random();
timer.Interval = random.Next(1, 10)*1000;
Console.WriteLine(e.SignalTime);
}
推荐答案
有一个操作符,你可以使用 Generate:
There's an operator for that, you can use Generate:
var source = Observable.Generate(
0,
x => x < 100,
x => x + 1,
_ => random.Next(0, 3),
_ => TimeSpan.FromMilliseconds(random.Next(1, 10)* 1000));
source.Subscribe(x => Console.WriteLine(x));
这篇关于使用 rx 以随机时间间隔生成数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文