관찰 가능한 모든 시퀀스를 관찰 가능한 단일 시퀀스로 병합합니다.
네임스페이스:System.Reactive.Linq
어셈블리: System.Reactive(System.Reactive.dll)
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으로 시작하는 정수 시퀀스를 만듭니다. 새 정수는 500ms마다 생성됩니다. 필터링된 두 시퀀스가 만들어집니다. 하나의 시퀀스가 원래 시퀀스를 필터링하여 세 번째 정수마다 생성합니다. 다른 시퀀스는 원래 시퀀스를 필터링하여 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