共用方式為


Observable.Merge < TSource > 方法 (IObservable < TSource > [])

將所有可觀察的序列合併成單一可觀察序列。

Namespace:System.Reactive.Linq
裝配: System.Reactive.dll) 中的 System.Reactive (

Syntax

'Declaration
Public Shared Function Merge(Of TSource) ( _
    ParamArray sources As IObservable(Of TSource)() _
) As IObservable(Of TSource)
'Usage
Dim sources As IObservable(Of TSource)()
Dim returnValue As IObservable(Of TSource)

returnValue = Observable.Merge(sources)
public static IObservable<TSource> Merge<TSource>(
    params IObservable<TSource>[] sources
)
public:
generic<typename TSource>
static IObservable<TSource>^ Merge(
    ... array<IObservable<TSource>^>^ sources
)
static member Merge : 
        sources:IObservable<'TSource>[] -> IObservable<'TSource> 
JScript does not support generic types and methods.

類型參數

  • TSource
    來源的類型。

參數

傳回值

類型:System.IObservable< TSource>
可觀察序列,可合併可觀察序列的專案。

備註

Merge 運算子可用來將多個可觀察序列合併成單一可觀察序列。 這個運算子的各種多載提供彈性來指定要合併的序列。 合併的序列會繼續在合併的序列中產生專案,直到所有序列都執行完成或其中一個序列產生錯誤為止。

範例

下列範例使用 Interval 運算子來建立以 0 開頭的整數序列。 每 500 毫秒會產生一個新的整數。 會建立兩個篩選的序列。 一個序列會篩選原始序列,以產生每三個整數。 另一個序列會篩選原始序列,只產生第 5 個整數。 然後,Merge 運算子會用來將這兩個篩選的序列合併成單一整數序列。 系統會建立定序序列的訂用帳戶,並將每個專案寫入主控台視窗。

using System;
using System.Reactive.Linq;
using System.Reactive.Concurrency;

namespace Example
{
  class Program
  {
    static void Main()
    {
      //*********************************************************************************************//
      //*** Generate a sequence of integers producing a new integer every .5 sec.                 ***//
      //*********************************************************************************************//

      var obsInt = Observable.Interval(TimeSpan.FromMilliseconds(500), Scheduler.ThreadPool);


      //*********************************************************************************************//
      //*** Filter the integer sequence to produce only every 3rd integer.                        ***//
      //*********************************************************************************************//

      var obsThrees = obsInt.Where(i => i % 3 == 0);


      //*********************************************************************************************//
      //*** Filter the integer sequence to produce only every 5th integer.                        ***//
      //*********************************************************************************************//

      var obsFives = obsInt.Where(i => i % 5 == 0);


      //***********************************************************************************************//
      //*** Subscribe to a merged sequence of the two filtered sequences. This merged sequence will ***//
      //*** produce every 3rd and every 5th integer.                                                ***//
      //***********************************************************************************************//

      var obs = Observable.Merge(new IObservable<long>[2] {obsThrees, obsFives});

      using (IDisposable handle = obs.Subscribe(x => Console.WriteLine(x)))
      {
        Console.WriteLine("Press ENTER to exit...\n");
        Console.ReadLine();
      }
    }
  }
}

下列輸出是由範例程式碼所產生。

Press ENTER to exit...

0
0
3
5
6
9
10
12
15
15
18
20
21
24
25
27
30
30

另請參閱

參考

Observable 類別

合併多載

System.Reactive.Linq 命名空間