1 回答
TA贡献1796条经验 获得超4个赞
在Rx中的操作方法如下:
void Main()
{
var scheduler = new EventLoopScheduler();
var loop = scheduler.Schedule(a =>
{
UpdateMachineState();
a();
});
Thread.Sleep(1);
loop.Dispose();
}
public void UpdateMachineState()
{
Console.Write(".");
}
.Schedule我使用的重载以aAction<Action>作为参数。如果您希望重新安排动作,则只需调用内部动作-因此上述代码有效地创建了无限循环。
然后.Dispose(),您可以通过调用返回.Schedule来取消循环。
另一种选择是使用.Generate运算符:
var scheduler = new EventLoopScheduler();
var query =
Observable
.Generate(0, x => true, x => x, x => machine.GetState(), scheduler);
var subscription = query.Subscribe(x => Console.Write("."));
Thread.Sleep(1);
subscription.Dispose();
- 1 回答
- 0 关注
- 180 浏览
添加回答
举报
