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("做完了");
}
}
}