首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用冷观测数据处理OnCompleted

用冷观测数据处理OnCompleted
EN

Stack Overflow用户
提问于 2011-09-27 15:07:57
回答 1查看 105关注 0票数 0

Rx中,下面的代码似乎不调用我的OnCompleted操作?

没有“序列完成”

代码语言:javascript
复制
    static void Main(string[] args)
    {
        var list = new List<int> { 1, 2, 3 };
        var obs = list.ToObservable();
        IDisposable subscription = obs.SubscribeOn(Scheduler.NewThread).Subscribe(p =>
        {
            Console.WriteLine(p.ToString());
            Thread.Sleep(200);
        },
        p => Console.WriteLine("Sequence completed"));
        Console.ReadLine();
        subscription.Dispose();
    }

我是不是在做傻事,因为控制台窗口中没有打印3之后的“已完成序列”?

控制台输出

代码语言:javascript
复制
1
2
3
_

因此,我问题的主要焦点是如何在这种类型的序列被迭代之后运行一些代码。

  • 例如,在观察到原始列表中的所有元素之后,如何执行Console.WriteLine("Sequence completed"))
  • 请注意,.ToObservable起源于IEnumerable (本例中为List<> )。
  • 并且订阅在NewThread上运行。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-27 19:07:16

问题是,.Subscribe的第二个参数是错误回调。只有在观察元素时出错时,才会打印“已完成的序列”字符串。

以下是修正后的代码:

代码语言:javascript
复制
var list = new List<int> { 1, 2, 3 };
var obs = list.ToObservable();
var subscription = obs.SubscribeOn(Scheduler.NewThread).Subscribe(p =>
    {
        Console.WriteLine(p.ToString());
        Thread.Sleep(200);
    },
    error => Console.WriteLine("Error!"),
    () => Console.WriteLine("sequence completed"));
Console.ReadLine();
subscription.Dispose();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7571406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档