Observable.Merge<TSource> , méthode (IObservable<TSource>[])
Fusionne toutes les séquences observables en une seule séquence observable.
Espace de noms :System.Reactive.Linq
Assemblée: System.Reactive (en System.Reactive.dll)
Syntaxe
'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.
Paramètres de type
- TSource
Type de la source.
Paramètres
- sources
Type : System.IObservable<TSource>[]
Séquences observables.
Valeur de retour
Type : System.IObservable<TSource>
Séquence observable qui fusionne les éléments des séquences observables.
Notes
L’opérateur Merge est utilisé pour fusionner plusieurs séquences observables en une seule séquence observable. Les différentes surcharges de cet opérateur offrent une flexibilité pour spécifier les séquences à fusionner. La séquence fusionnée continue de produire des éléments dans la séquence fusionnée jusqu’à ce que toutes les séquences aient été exécutées jusqu’à ce qu’elles soient terminées ou qu’une des séquences génère une erreur.
Exemples
L’exemple suivant utilise l’opérateur Interval pour créer une séquence d’entiers commençant par 0. Un nouvel entier est produit toutes les 500 ms. Deux séquences filtrées sont créées. Une séquence filtre la séquence d’origine pour produire chaque tiers entier. L’autre séquence filtre la séquence d’origine pour produire uniquement chaque 5e entier. L’opérateur Merge est ensuite utilisé pour fusionner ces deux séquences filtrées en une seule séquence d’entiers. Un abonnement est créé pour la séquence fusionnée et chaque élément est écrit dans la fenêtre de console.
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();
}
}
}
}
La sortie suivante a été générée par l’exemple de code.
Press ENTER to exit...
0
0
3
5
6
9
10
12
15
15
18
20
21
24
25
27
30
30