Sdílet prostřednictvím


Observable.Interval – metoda (TimeSpan, IScheduler)

Vrátí pozorovatelnou sekvenci, která po každé době vytvoří hodnotu.

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

Parametry

  • period
    Typ: System.TimeSpan
    Období pro vytvoření hodnot ve výsledné sekvenci.

Návratová hodnota

Typ: System.IObservable<Int64>
Pozorovatelná posloupnost, která vytváří hodnotu po každém období.

Poznámky

Operátor Interval generuje sekvenci dlouhých celých čísel. Každé celé číslo se vygeneruje po vypršení časového rozsahu zadaného pro parametr period . Parametr scheduleru lze použít k naplánování generování celých čísel pomocí libovolného zadaného plánovače nebo vlastního plánovače. Například NewThreadScheduler lze použít ke spuštění generování celých čísel v novém vlákně.

Příklady

Následující příklad kódu používá operátor Interval k vygenerování posloupnosti dlouhých celých čísel zírajících na nule. Každé celé číslo v sekvenci se vygeneruje po uplynutí dvousekundového období. Každé celé číslo se zapisuje do okna konzoly spolu s aktuálním časem, aby se zobrazil parametr tečky. Generování celočíselné sekvence je naplánováno na spuštění ve vlákně z fondu vláken .NET, takže hlavní vlákno není blokováno a může zpracovat klávesu Enter stisknutím k zastavení intervalu.

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

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

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

Viz také

Reference

Pozorovatelná třída

Interval – přetížení

System.Reactive.Linq – obor názvů