【问题标题】:Generate numbers at random time intervals with rx使用 rx 以随机时间间隔生成数字
【发布时间】:2015-06-09 23:46:26
【问题描述】:

如何使用 Rx.Net 生成一个数字列表,例如 0-100,其中每个数字都是随机生成的?

编辑:

好像这样可行

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

【问题讨论】:

  • 更具体。另外,你试过什么?

标签: system.reactive


【解决方案1】:

有一个操作符,你可以使用 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));

【讨论】:

  • 对于无限系列的阻塞问题,请使用IScheduler 参数。
猜你喜欢
  • 2022-12-04
  • 1970-01-01
  • 2018-10-11
  • 2011-10-03
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多