CreateAsyncObservable不会引发OnComplete

时间:2014-10-27 04:31:57

标签: c# reactiveui

还在玩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"));
}

1 个答案:

答案 0 :(得分:0)

ReactiveCommands从不OnComplete,因为在任何时候,您都可以再次点击该按钮:)如果您想捕获{{1}的单个调用的结果},使用ReactiveCommand方法。