Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Combina todas las secuencias observables en una sola secuencia observable.
Espacio de nombres:System.Reactive.Linq
Ensamblaje: System.Reactive (en System.Reactive.dll)
Sintaxis
'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.
Parámetros de tipo
- TSource
Tipo de origen.
Parámetros
- sources
Tipo: System.IObservable<TSource>[]
Secuencias observables.
Valor devuelto
Tipo: System.IObservable<TSource>
Secuencia observable que combina los elementos de las secuencias observables.
Observaciones
El operador Merge se usa para combinar varias secuencias observables en una sola secuencia observable. Varias sobrecargas de este operador proporcionan flexibilidad para especificar las secuencias que se van a combinar. La secuencia combinada seguirá generando elementos en la secuencia combinada hasta que toda la secuencia se haya ejecutado hasta su finalización o una de las secuencias generará un error.
Ejemplos
En el ejemplo siguiente se usa el operador Interval para crear una secuencia de enteros a partir de 0. Se produce un nuevo entero cada 500 ms. Se crean dos secuencias filtradas. Una secuencia filtra la secuencia original para generar cada tercer entero. La otra secuencia filtra la secuencia original para generar solo cada 5º entero. A continuación, el operador Merge se usa para combinar estas dos secuencias filtradas en una sola secuencia de enteros. Se crea una suscripción para la secuencia combinada y cada elemento se escribe en la ventana de la consola.
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();
}
}
}
}
El código de ejemplo generó la siguiente salida.
Press ENTER to exit...
0
0
3
5
6
9
10
12
15
15
18
20
21
24
25
27
30
30