我正在创建一个模拟器。仿真的核心在无限循环中运行,如下所示:
while (true)
{
UpdateMachineState();
}
我想介绍Reactive Extensions,以便将该循环执行到另一个线程中并使它可取消,但是我完全迷失了。
由于我的模拟器是GUI应用程序(通用Windows),因此我不会阻止UI线程。
它应该看起来像:
...
while (true)
{
if (machine.IsHalted)
{
observer.OnCompleted;
}
observer.OnNext(machine.GetState());
cancellationToken.ThrowIfCancellationRequested();
}
...
当仿真器进入“停止”状态时,创建的序列最终将完成。否则,它将一直持续推动States(代表其内部状态的对象)。
我试过了Observable.Create,但是提供a的重载CancellationToken需要一个Task<Action>。
慕的地8271018
相关分类