Observable.Interval, méthode (TimeSpan, IScheduler)
Retourne une séquence observable qui produit une valeur après chaque période.
Namespace:System.Reactive.Linq
Assemblée: System.Reactive (en System.Reactive.dll)
Syntaxe
'Declaration
Public Shared Function Interval ( _
period As TimeSpan, _
scheduler As IScheduler _
) As IObservable(Of Long)
'Usage
Dim period As TimeSpan
Dim scheduler As IScheduler
Dim returnValue As IObservable(Of Long)
returnValue = Observable.Interval(period, _
scheduler)
public static IObservable<long> Interval(
TimeSpan period,
IScheduler scheduler
)
public:
static IObservable<long long>^ Interval(
TimeSpan period,
IScheduler^ scheduler
)
static member Interval :
period:TimeSpan *
scheduler:IScheduler -> IObservable<int64>
public static function Interval(
period : TimeSpan,
scheduler : IScheduler
) : IObservable<long>
Paramètres
- period
Type : System.TimeSpan
Période de production des valeurs dans la séquence résultante.
- scheduler
Type : System.Reactive.Concurrency.IScheduler
Planificateur sur lequel exécuter le minuteur.
Valeur de retour
Type : System.IObservable<Int64>
Séquence observable qui produit une valeur après chaque période.
Notes
L’opérateur Interval génère une séquence d’entiers longs. Chaque entier est généré après l’expiration de l’intervalle de temps fourni pour le paramètre period. Le paramètre scheduler peut être utilisé pour planifier la génération d’entiers à l’aide de l’un des planificateurs fournis ou d’un planificateur personnalisé. Par exemple , newThreadScheduler peut être utilisé pour exécuter la génération des entiers sur un nouveau thread.
Exemples
L’exemple de code suivant utilise l’opérateur Interval pour générer une séquence d’entiers longs à zéro. Chaque entier de la séquence est généré après l’expiration des deux secondes périodes. Chaque entier est écrit dans la fenêtre de console avec l’heure actuelle pour afficher le paramètre de période en vigueur. La génération de la séquence d’entiers est planifiée pour s’exécuter sur un thread à partir du pool de threads .Net de sorte que le thread main n’est pas bloqué et peut traiter la touche Entrée enfoncée pour arrêter l’intervalle.
using System;
using System.Reactive.Linq;
using System.Reactive.Concurrency;
namespace Example
{
class Program
{
static void Main()
{
//*********************************************************************************************//
//*** Generate a sequence of integers starting at zero until ENTER is pressed. ***//
//*** ***//
//*** A new integer will be generated by the Interval operator after each 2 second period ***//
//*** expires. ***//
//*** ***//
//*** By using the ThreadPool scheduler, the sequence of integers will be generated by a ***//
//*** thread in the .NET thread so the main thread is not blocked. ***//
//*********************************************************************************************//
const int periodInSec = 2;
var obs = Observable.Interval(TimeSpan.FromSeconds(periodInSec),
Scheduler.ThreadPool);
//*********************************************************************************************//
//*** Write each value from Interval to the console window along with the current time to ***//
//*** show the period time span in effect. ***//
//*********************************************************************************************//
using (IDisposable handle = obs.Subscribe(x => Console.WriteLine("Integer : {0}\tCurrent Time : {1}", x, DateTime.Now.ToLongTimeString())))
{
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...
Integer : 0 Current Time : 5:11:55 PM
Integer : 1 Current Time : 5:11:57 PM
Integer : 2 Current Time : 5:11:59 PM
Integer : 3 Current Time : 5:12:01 PM
Integer : 4 Current Time : 5:12:03 PM
Integer : 5 Current Time : 5:12:05 PM
Integer : 6 Current Time : 5:12:07 PM
Integer : 7 Current Time : 5:12:09 PM
Integer : 8 Current Time : 5:12:11 PM
Integer : 9 Current Time : 5:12:13 PM
Integer : 10 Current Time : 5:12:15 PM
Integer : 11 Current Time : 5:12:17 PM
Integer : 12 Current Time : 5:12:19 PM
Integer : 13 Current Time : 5:12:21 PM