Sdílet prostřednictvím


Observable.Merge<TSource> – metoda (IObservable<TSource>[])

Sloučí všechny pozorovatelné sekvence do jedné pozorovatelné sekvence.

Obor názvů:System.Reactive.Linq
Sestavení: System.Reactive (v 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.

Parametry typu

  • Tsource
    Typ zdroje.

Parametry

Návratová hodnota

Typ: System.IObservable<TSource>
Pozorovatelná sekvence, která slučuje prvky pozorovatelných sekvencí.

Poznámky

Operátor Sloučit slouží ke sloučení více pozorovatelných sekvencí do jedné pozorovatelné sekvence. Různá přetížení tohoto operátoru poskytují flexibilitu pro určení sekvencí, které mají být sloučeny. Sloučená sekvence bude nadále vytvářet položky ve sloučené sekvenci, dokud se všechny sekvence nespustí do dokončení nebo dokud některá z těchto sekvencí nevyvolá chybu.

Příklady

Následující příklad používá operátor Interval k vytvoření sekvence celých čísel začínajících na 0. Nové celé číslo se vytváří každých 500ms. Vytvoří se dvě filtrované sekvence. Jedna sekvence filtruje původní sekvenci a vytváří každé třetí celé číslo. Druhá sekvence filtruje původní sekvenci tak, aby vzniklo pouze každé 5. celé číslo. Operátor Sloučit se pak použije ke sloučení těchto dvou filtrovaných sekvencí do jedné posloupnosti celých čísel. Pro sloučenou sekvenci se vytvoří odběr a každá položka se zapíše do okna konzoly.

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();
      }
    }
  }
}

Následující výstup byl vygenerován ukázkovým kódem.

Press ENTER to exit...

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

Viz také

Reference

Pozorovatelná třída

Sloučení – přetížení

System.Reactive.Linq – obor názvů