net tpl 数据流处理 学习 09 IObservable Subscribe


using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Concurrency;
using System.Reactive.Disposables;
using System.Reactive.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObserverDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //var query = Enumerable.Range(1, 5).ToList();
            //IObservable<int> observableQuery = query.ToObservable();
            ////这个是用在UI上的
            ////observableQuery.ObserveOnDispatcher().Subscribe(Console.WriteLine);


            //observableQuery.Subscribe(Console.WriteLine, ImDone);

            ////采用默认的任务调度器
            //var observableQuery2 = query.ToObservable(Scheduler.Default);
            //observableQuery2.ObserveOn(Scheduler.CurrentThread).Subscribe(Console.WriteLine);

            IObservable<int> test = Observable.Create<int>(
                //下面的是对IObserver.Subscribe方法的实现
                observer =>
                {
                    try
                    {
                        observer.OnNext(1);
                        observer.OnCompleted();
                    }
                    catch (Exception e)
                    {
                        observer.OnError(e);
                    }
                    return () => { Console.WriteLine("我输出完了,你们打"); };
                });
            test.Subscribe(Console.WriteLine);

            var test2 = Observable.Create<int>(
                         //下面的是对IObserver.Subscribe方法的实现
                         observer =>
                         {
                             try
                             {
                                 observer.OnNext(1);
                                 observer.OnCompleted();
                             }
                             catch (Exception e)
                             {
                                 observer.OnError(e);
                             }

                             return Disposable.Empty;
                         });
            test2.Subscribe(Console.WriteLine);

            Console.Read();
        }
        static void ImDone()
        {
            Console.WriteLine("做完了");
        }
    }
}



作者:spike

分类: Net

创作时间:2023-06-25

更新时间:2024-12-09

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1