Compartir a través de


Método Observable.Merge<TSource> (IObservable<TSource>[])

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

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

Consulte también

Referencia

Clase Observable

Sobrecarga de mezcla

Espacio de nombres System.Reactive.Linq