.NET Reactive Extensions具有一种巧妙的方法,可以使用称为Observable.Generate的corecursion生成序列。
我不能找到在UniRx该方法(统一无扩展)的等效。您能帮我将此代码示例移植到UniRx环境中吗?
public static IObservable<long> Timer(TimeSpan dueTime)
{
return Observable.Generate(
0L,
i => i < 1,
i => i + 1,
i => i,
i => dueTime
);
}
答案 0 :(得分:1)
生成是UniRX中未包含的运算符。
您可以尝试使用 Operator Observer Base 或使用 Create 运算符来创建自己的“生成”版本。
您到底想做什么?也许我可以以某种方式帮助您。
答案 1 :(得分:0)
我尝试过,...正在工作。但我不知道可以吗? = D
public static IObservable<DateTime> CreateRandomTimer(int minValue, int maxValue)
{
return Observable.CreateSafe<DateTime>(observer =>
{
var random = new Random();
var timer = new Timer
{
Enabled = true,
Interval = random.Next(minValue, maxValue) * 1000
};
void OnTimerElapsed(object sender, ElapsedEventArgs e)
{
observer.OnNext(e.SignalTime);
var currentTimer = (Timer) sender;
currentTimer.Stop();
currentTimer.Interval = random.Next(minValue, maxValue) * 1000;
currentTimer.Start();
}
timer.Elapsed += OnTimerElapsed;
timer.Start();
return Disposable.Create(() =>
{
timer.Elapsed -= OnTimerElapsed;
timer.Dispose();
});
});
}