还在玩ReactiveUi。
我目前无法确定序列何时结束。我有以下代码:
public RxTest()
{
DownloadDocument = ReactiveCommand.CreateAsyncObservable(_ => GetItems().ToObservable());
DownloadDocument.Subscribe(Console.WriteLine, () => Console.WriteLine("Done"));
}
public ReactiveCommand<int> DownloadDocument { get; set; }
public void RunCommand()
{
DownloadDocument.Execute(new object());
}
IEnumerable<int> GetItems()
{
for (int i = 0; i < 20; i++)
{
Thread.Sleep(100);
yield return i;
}
}
打印数字1到19,但是&#34;完成&#34;没有打印(即,OnComplete没有被提出)。
相同的(类似的)代码在纯Rx中运行得很好(我使用Linqpad来测试它,但是当我的测试应用程序出现问题时也可以工作)...
{
IObservable<int> range = GetItems().ToObservable(Scheduler.NewThread);
range.ObserveOn(Scheduler.Default).Subscribe (Console.WriteLine, () => Console.WriteLine("Done"));
}
答案 0 :(得分:0)
ReactiveCommands
从不OnComplete
,因为在任何时候,您都可以再次点击该按钮:)如果您想捕获{{1}的单个调用的结果},使用ReactiveCommand
方法。