最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# Rx的主要接口深入理解

 更新時(shí)間:2017年03月07日 10:25:46   作者:aofengdaxia  
這篇文章主要介紹了C# Rx的主要接口深入理解的相關(guān)資料,需要的朋友可以參考下

C# Rx的主要接口深入理解

 IObservable / IObserver 接口在.NET Framework 4.0基類庫(kù)中可用,并且它們包含在可以安裝在.NET 3.5,Silverlight 3和4以及JavaScript中的包中。

IObservable/IObserver

  Rx將異步和基于事件的數(shù)據(jù)源公開(kāi)為基于推送的可觀察序列,由.NET Framework 4.0中的新IObservable 接口抽象。 這個(gè)IObservable 接口是用于基于拉的,可枚舉集合的熟悉的IEnumerable 接口的雙重。 它表示可以觀察到的數(shù)據(jù)源,這意味著它可以向任何有興趣的人發(fā)送數(shù)據(jù)。 它維護(hù)一個(gè)代表這種感興趣的監(jiān)聽(tīng)器的依賴IObserver 實(shí)現(xiàn)的列表,并且自動(dòng)地通知它們?nèi)魏螤顟B(tài)變化。

  IObservable 接口的實(shí)現(xiàn)可以被視為類型T的元素的集合。因此,IObservable 可以被視為整數(shù)的集合,其中整數(shù)將被推送到訂閱的觀察者

  如“什么是Rx”中所述,推送模型的另一半由IObserver 接口表示,它表示通過(guò)訂閱注冊(cè)興趣的觀察者。 隨后將項(xiàng)目從其訂閱的可觀察序列遞送給觀察者。

  為了從observable集合接收通知,您使用IObservable的Subscribe方法為其傳遞IObserver 對(duì)象。 作為對(duì)此觀察者的回報(bào),Subscribe方法返回一個(gè)IDisposable對(duì)象,作為訂閱的句柄。 這允許您在完成后清理訂閱。 在此對(duì)象上調(diào)用Dispose將觀察者從源分離,以便不再傳遞通知。 正如你可以推斷,在Rx中,不需要像.NET事件模型中那樣顯式取消訂閱事件。

  觀察者支持三個(gè)發(fā)布事件,由接口的方法反映。 當(dāng)可觀察的數(shù)據(jù)源具有可用的數(shù)據(jù)時(shí),OnNext可以被調(diào)用零次或更多次。 例如,用于鼠標(biāo)移動(dòng)事件的可觀察數(shù)據(jù)源可以在每次鼠標(biāo)移動(dòng)時(shí)發(fā)出一個(gè)Point對(duì)象。 其他兩種方法用于指示完成或錯(cuò)誤。

  下面列出了IObservable / IObserver 接口。   

public interface IObservable<out T> 
{ 
  IDisposable Subscribe(IObserver<T> observer); 
} 
public interface IObserver<in T> 
{ 
  void OnCompleted();// Notifies the observer that the source has finished sending messages.
  void OnError(Exception error); // Notifies the observer about any exception or error.
  void OnNext(T value);     // Pushes the next data value from the source to the observer.
} 

  Rx還提供了Subscribe擴(kuò)展方法,以便您可以自己避免實(shí)現(xiàn)IObserver 接口。 對(duì)于可觀察序列的每個(gè)發(fā)布事件(OnNext,OnError,OnCompleted),可以指定將調(diào)用的委托,如下面的示例所示。 如果不為事件指定操作,則將發(fā)生默認(rèn)行為。

IObservable<int> source = Observable.Range(1, 5); //creates an observable sequence of 5 integers, starting from 1
IDisposable subscription = source.Subscribe(
              x => Console.WriteLine("OnNext: {0}", x), //prints out the value being pushed
              ex => Console.WriteLine("OnError: {0}", ex.Message),
              () => Console.WriteLine("OnCompleted"));

  您可以將可觀察序列(例如鼠標(biāo)懸停事件的序列)看作是正常集合。 因此,您可以在集合上編寫(xiě)LINQ查詢以執(zhí)行過(guò)濾,分組,合成等操作。為了使可觀察序列更有用,Rx程序集提供了許多工廠LINQ運(yùn)算符,因此您不需要自己實(shí)現(xiàn)任何這些 。 這將在使用LINQ運(yùn)算符的查詢可觀察序列主題。  

警告:

您不需要自己實(shí)現(xiàn)IObservable / IObserver 接口。 Rx為您提供這些接口的內(nèi)部實(shí)現(xiàn),并通過(guò)Observable和Observer類型提供的各種擴(kuò)展方法暴露它們。 有關(guān)詳細(xì)信息,請(qǐng)參閱創(chuàng)建和查詢可觀察序列主題

 感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • C# 使用GDI繪制雷達(dá)圖的實(shí)例

    C# 使用GDI繪制雷達(dá)圖的實(shí)例

    這篇文章主要介紹了C# 使用GDI繪制雷達(dá)圖,本文通過(guò)一段實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Unity實(shí)戰(zhàn)之FlyPin(見(jiàn)縫插針)小游戲的實(shí)現(xiàn)

    Unity實(shí)戰(zhàn)之FlyPin(見(jiàn)縫插針)小游戲的實(shí)現(xiàn)

    這篇文章主要介紹了利用Unity制作FlyPin(見(jiàn)縫插針)小游戲的實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起試一試
    2022-01-01
  • winform用datagridview制作課程表實(shí)例

    winform用datagridview制作課程表實(shí)例

    這篇文章主要介紹了winform用datagridview制作課程表的方法,實(shí)例分析了WinForm實(shí)現(xiàn)課程表的結(jié)構(gòu)、數(shù)據(jù)庫(kù)及調(diào)用技巧,需要的朋友可以參考下
    2015-01-01
  • 深入理解C#中的枚舉

    深入理解C#中的枚舉

    本篇文章主要是對(duì)C#中的枚舉進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • C#對(duì)JSON與對(duì)象的序列化與反序列化

    C#對(duì)JSON與對(duì)象的序列化與反序列化

    這篇文章介紹了C#對(duì)JSON與對(duì)象的序列化與反序列化,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#中GraphicsPath的Widen方法用法實(shí)例

    C#中GraphicsPath的Widen方法用法實(shí)例

    這篇文章主要介紹了C#中GraphicsPath的Widen方法用法,實(shí)例分析了Widen方法的使用技巧,需要的朋友可以參考下
    2015-06-06
  • C# 異步多線程入門(mén)到精通之ThreadPool篇

    C# 異步多線程入門(mén)到精通之ThreadPool篇

    ThreadPool 是 .net 2.0 時(shí)代的產(chǎn)物,有了 Thread 為什么還會(huì)有 ThreadPool 呢?ThreadPool 可以做到限制線程數(shù)量、重用線程
    2021-11-11
  • 詳解C#如何加密解密RAR文件

    詳解C#如何加密解密RAR文件

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)加密解密RAR文件的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#實(shí)現(xiàn)簡(jiǎn)單合并word文檔的方法

    C#實(shí)現(xiàn)簡(jiǎn)單合并word文檔的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單合并word文檔的方法,涉及C#針對(duì)word文檔的讀取、插入、保存等技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C# Winform調(diào)用百度接口實(shí)現(xiàn)人臉識(shí)別教程(附源碼)

    C# Winform調(diào)用百度接口實(shí)現(xiàn)人臉識(shí)別教程(附源碼)

    這篇文章主要介紹了C# Winform調(diào)用百度接口實(shí)現(xiàn)人臉識(shí)別教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

广德县| 二连浩特市| 贺兰县| 西城区| 醴陵市| 和政县| 新巴尔虎右旗| 永昌县| 盖州市| 崇明县| 泰州市| 庄河市| 绥化市| 海兴县| 石林| 瓦房店市| 和林格尔县| 忻城县| 黑龙江省| 四平市| 巩留县| 永仁县| 慈利县| 桐乡市| 伊宁市| 临洮县| 镇坪县| 舒城县| 桐庐县| 隆林| 安龙县| 张家界市| 卓资县| 内江市| 阿尔山市| 丹棱县| 额尔古纳市| 罗定市| 奎屯市| 页游| 夏津县|