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
來源的類型。
參數
- sources
類型:System.IObservable< 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