zoukankan      html  css  js  c++  java
  • Reactive Extensions

    Rx提供了一种新的组织和协调异步事件的方式,极大的简化了代码的编写。Rx最显著的特性是使用可观察集合(Observable Collection)来达到集成异步(composing asynchronous)和基于事件(event-based)的编程的效果。

    我的理解是它是一种编程模式的抽象,http://latentflip.com/imperative-vs-declarative/,协同Linq的思想可以很好的工作,使代码更为整洁。

    Obervable Collection是Rx的核心,你甚至可以把事件看成是一种流。它实现了Observer模式的一种变种

    在Rx中,IObservable相当于经典模式中的Subject,IObserver相当于Observer

    通过使用Rx既能够控制Observable的线程控制,也能够控制Observer的callback的线程控制

    static void Main(string[] args)
    {
        Console.WriteLine("Start: Thread #" +Thread.CurrentThread.ManagedThreadId);
        var query = from number in Enumerable.Range(1, 5)
                    select StringWait(number.ToString());
        //耗时操作让Observable在Worker线程中完成
    var observableQuery = query.ToObservable(ThreadPoolScheduler.Instance);
    //指定Observer在UI线程中更新UI

    observableQuery.ObserveOn(Scheduler.Dispatcher).Subscribe(ProcessNumber); }
    private static string StringWait(string str) { Thread.Sleep(500); return str; } private static void ProcessNumber(string number) { Console.WriteLine("{0} Thread {1}", number, Thread.CurrentThread.ManagedThreadId); }

    上述代码只是个实例,然而可以被运用到GUI APP中,比如后台操作或者耗时操作可以通过Worker线程完成,更新UI的操作直接让Observer在UI Thread中完成,编程模式得到简化。

  • 相关阅读:
    转 [Lucene.Net] 基本用法
    万商网与Alibaba等的比较
    B2B闯入者 新势力正在崛起
    项目管理随想一
    【转载】/proc目录中的重要信息
    文件名乱码转换器
    C函数调用中对入参取地址引发的问题
    编译通过的代码不算什么,一眼能看懂的代码才算好代码
    Handler使用
    删除system/app下的apk
  • 原文地址:https://www.cnblogs.com/cqcmdwym/p/4293167.html
Copyright © 2011-2022 走看看