Generate numbers at random time intervals with rx

故事扮演 提交于 2020-01-09 05:33:25

问题


How can I generate a list of number with Rx.Net, like 0-100, where each number is generated at a random time?

edit:

seems like this works

    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);
    }

回答1:


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));


来源:https://stackoverflow.com/questions/30733906/generate-numbers-at-random-time-intervals-with-rx

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!