Timer.Interval Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta l'intervallo, espresso in millisecondi, in corrispondenza del quale generare l'evento Elapsed .
public:
property double Interval { double get(); void set(double value); };
public double Interval { get; set; }
[System.Timers.TimersDescription("TimerInterval")]
public double Interval { get; set; }
[System.Timers.TimersDescription("TimerInterval")]
[System.ComponentModel.SettingsBindable(true)]
public double Interval { get; set; }
member this.Interval : double with get, set
[<System.Timers.TimersDescription("TimerInterval")>]
member this.Interval : double with get, set
[<System.Timers.TimersDescription("TimerInterval")>]
[<System.ComponentModel.SettingsBindable(true)>]
member this.Interval : double with get, set
Public Property Interval As Double
Valore della proprietà
Tempo, espresso in millisecondi, tra Elapsed gli eventi. Il valore deve essere maggiore di zero e minore o uguale a Int32.MaxValue. Il valore predefinito è 100 millisecondi.
- Attributi
Eccezioni
L'intervallo è minore o uguale a zero.
oppure
L'intervallo è maggiore di Int32.MaxValue e il timer è attualmente abilitato. Se il timer non è attualmente abilitato, non viene generata alcuna eccezione fino a quando non diventa abilitata.
Esempio
Nell'esempio seguente viene creata un'istanza di un Timer oggetto che genera l'evento Timer.Elapsed ogni due secondi (2000 millisecondi), configura un gestore eventi per l'evento e avvia il timer. Il gestore eventi visualizza il valore della ElapsedEventArgs.SignalTime proprietà ogni volta che viene generato.
using System;
using System.Timers;
public class Example
{
private static Timer aTimer;
public static void Main()
{
// Create a timer and set a two second interval.
aTimer = new System.Timers.Timer();
aTimer.Interval = 2000;
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += OnTimedEvent;
// Have the timer fire repeated events (true is the default)
aTimer.AutoReset = true;
// Start the timer
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program at any time... ");
Console.ReadLine();
}
private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}
}
// The example displays output like the following:
// Press the Enter key to exit the program at any time...
// The Elapsed event was raised at 5/20/2015 8:48:58 PM
// The Elapsed event was raised at 5/20/2015 8:49:00 PM
// The Elapsed event was raised at 5/20/2015 8:49:02 PM
// The Elapsed event was raised at 5/20/2015 8:49:04 PM
// The Elapsed event was raised at 5/20/2015 8:49:06 PM
open System.Timers
let onTimedEvent source (e: ElapsedEventArgs) =
printfn $"The Elapsed event was raised at {e.SignalTime}"
// Create a timer and set a two second interval.
let aTimer = new Timer()
aTimer.Interval <- 2000
// Hook up the Elapsed event for the timer.
aTimer.Elapsed.AddHandler onTimedEvent
// Have the timer fire repeated events (true is the default)
aTimer.AutoReset <- true
// Start the timer
aTimer.Enabled <- true
printfn "Press the Enter key to exit the program at any time... "
stdin.ReadLine() |> ignore
// The example displays output like the following:
// Press the Enter key to exit the program at any time...
// The Elapsed event was raised at 5/20/2015 8:48:58 PM
// The Elapsed event was raised at 5/20/2015 8:49:00 PM
// The Elapsed event was raised at 5/20/2015 8:49:02 PM
// The Elapsed event was raised at 5/20/2015 8:49:04 PM
// The Elapsed event was raised at 5/20/2015 8:49:06 PM
Imports System.Timers
Public Module Example
Private aTimer As Timer
Public Sub Main()
' Create a timer and set a two second interval.
aTimer = New System.Timers.Timer()
aTimer.Interval = 2000
' Hook up the Elapsed event for the timer.
AddHandler aTimer.Elapsed, AddressOf OnTimedEvent
' Have the timer fire repeated events (true is the default)
aTimer.AutoReset = True
' Start the timer
aTimer.Enabled = True
Console.WriteLine("Press the Enter key to exit the program at any time... ")
Console.ReadLine()
End Sub
Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs)
Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime)
End Sub
End Module
' The example displays output like the following:
' Press the Enter key to exit the program at any time...
' The Elapsed event was raised at 5/20/2015 8:48:58 PM
' The Elapsed event was raised at 5/20/2015 8:49:00 PM
' The Elapsed event was raised at 5/20/2015 8:49:02 PM
' The Elapsed event was raised at 5/20/2015 8:49:04 PM
' The Elapsed event was raised at 5/20/2015 8:49:06 PM
Commenti
Utilizzare la Interval proprietà per determinare la frequenza con cui viene generato l'evento Elapsed . Poiché la Timer classe dipende dall'orologio di sistema, ha la stessa risoluzione dell'orologio di sistema. Ciò significa che l'evento Elapsed verrà generato a un intervallo definito dalla risoluzione dell'orologio di sistema se la Interval proprietà è minore della risoluzione dell'orologio di sistema. Nell'esempio seguente la Interval proprietà viene impostata su 5 millisecondi. Quando viene eseguito in un sistema Windows il cui clock di sistema ha una risoluzione di circa 15 millisecondi, l'evento viene generato circa ogni 15 millisecondi anziché ogni 5 millisecondi.
Annotazioni
L'orologio di sistema usato è lo stesso orologio usato da GetTickCount, che non è interessato dalle modifiche apportate con timeBeginPeriod e timeEndPeriod.
using System;
using System.IO;
using System.Collections.Generic;
using System.Timers;
public class Example
{
private static Timer aTimer;
private static List<String> eventlog;
private static int nEventsFired = 0;
private static DateTime previousTime;
public static void Main()
{
eventlog = new List<String>();
StreamWriter sr = new StreamWriter(@".\Interval.txt");
// Create a timer with a five millisecond interval.
aTimer = new Timer(5);
aTimer.Elapsed += OnTimedEvent;
// Hook up the Elapsed event for the timer.
aTimer.AutoReset = true;
sr.WriteLine("The timer should fire every {0} milliseconds.",
aTimer.Interval);
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program... ");
Console.ReadLine();
foreach (var item in eventlog)
sr.WriteLine(item);
sr.Close();
Console.WriteLine("Terminating the application...");
}
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
eventlog.Add(String.Format("Elapsed event at {0:HH':'mm':'ss.ffffff} ({1})",
e.SignalTime,
nEventsFired++ == 0 ?
0.0 : (e.SignalTime - previousTime).TotalMilliseconds));
previousTime = e.SignalTime;
if (nEventsFired == 20) {
Console.WriteLine("No more events will fire...");
aTimer.Enabled = false;
}
}
}
// The example writes output like the following to a file:
// The timer should fire every 5 milliseconds.
// Elapsed event at 08:42:49.370344 (0)
// Elapsed event at 08:42:49.385345 (15.0015)
// Elapsed event at 08:42:49.400347 (15.0015)
// Elapsed event at 08:42:49.415348 (15.0015)
// Elapsed event at 08:42:49.430350 (15.0015)
// Elapsed event at 08:42:49.445351 (15.0015)
// Elapsed event at 08:42:49.465353 (20.002)
// Elapsed event at 08:42:49.480355 (15.0015)
// Elapsed event at 08:42:49.495356 (15.0015)
// Elapsed event at 08:42:49.510358 (15.0015)
// Elapsed event at 08:42:49.525359 (15.0015)
// Elapsed event at 08:42:49.540361 (15.0015)
// Elapsed event at 08:42:49.555362 (15.0015)
// Elapsed event at 08:42:49.570364 (15.0015)
// Elapsed event at 08:42:49.585365 (15.0015)
// Elapsed event at 08:42:49.605367 (20.002)
// Elapsed event at 08:42:49.620369 (15.0015)
// Elapsed event at 08:42:49.635370 (15.0015)
// Elapsed event at 08:42:49.650372 (15.0015)
// Elapsed event at 08:42:49.665373 (15.0015)
open System
open System.IO
open System.Timers
let aTimer = new Timer 5
let eventlog = ResizeArray()
let mutable nEventsFired = 0
let mutable previousTime = DateTime()
let onTimedEvent source (e: ElapsedEventArgs) =
String.Format("Elapsed event at {0:HH':'mm':'ss.ffffff} ({1})", e.SignalTime, if nEventsFired = 0 then 0. else (e.SignalTime - previousTime).TotalMilliseconds)
|> eventlog.Add
nEventsFired <- nEventsFired + 1
previousTime <- e.SignalTime
if nEventsFired = 20 then
printfn "No more events will fire..."
aTimer.Enabled <- false
[<EntryPoint>]
let main _ =
use sr = new StreamWriter(@".\Interval.txt")
// Create a timer with a five millisecond interval.
aTimer.Elapsed.AddHandler onTimedEvent
// Hook up the Elapsed event for the timer.
aTimer.AutoReset <- true
sr.WriteLine $"The timer should fire every {aTimer.Interval} milliseconds."
aTimer.Enabled <- true
printfn "Press the Enter key to exit the program... "
stdin.ReadLine() |> ignore
for item in eventlog do
sr.WriteLine item
printfn "Terminating the application..."
0
// The example writes output like the following to a file:
// The timer should fire every 5 milliseconds.
// Elapsed event at 08:42:49.370344 (0)
// Elapsed event at 08:42:49.385345 (15.0015)
// Elapsed event at 08:42:49.400347 (15.0015)
// Elapsed event at 08:42:49.415348 (15.0015)
// Elapsed event at 08:42:49.430350 (15.0015)
// Elapsed event at 08:42:49.445351 (15.0015)
// Elapsed event at 08:42:49.465353 (20.002)
// Elapsed event at 08:42:49.480355 (15.0015)
// Elapsed event at 08:42:49.495356 (15.0015)
// Elapsed event at 08:42:49.510358 (15.0015)
// Elapsed event at 08:42:49.525359 (15.0015)
// Elapsed event at 08:42:49.540361 (15.0015)
// Elapsed event at 08:42:49.555362 (15.0015)
// Elapsed event at 08:42:49.570364 (15.0015)
// Elapsed event at 08:42:49.585365 (15.0015)
// Elapsed event at 08:42:49.605367 (20.002)
// Elapsed event at 08:42:49.620369 (15.0015)
// Elapsed event at 08:42:49.635370 (15.0015)
// Elapsed event at 08:42:49.650372 (15.0015)
// Elapsed event at 08:42:49.665373 (15.0015)
Imports System.Collections.Generic
Imports System.IO
Imports System.Timers
Module Example
Private WithEvents aTimer As Timer
Private eventlog As List(Of String)
Private nEventsFired As Integer = 0
Private previousTime As Date
Public Sub Main()
eventlog = New List(Of String)()
Dim sr As New StreamWriter(".\Interval.txt")
' Create a timer with a five millisecond interval.
aTimer = New Timer(5)
aTimer.AutoReset = True
sr.WriteLine("The timer should fire every {0} milliseconds.",
aTimer.Interval)
aTimer.Enabled = True
Console.WriteLine("Press the Enter key to exit the program... ")
Console.ReadLine()
For Each item In eventlog
sr.WriteLine(item)
Next
sr.Close()
Console.WriteLine("Terminating the application...")
End Sub
Private Sub OnTimedEvent(source As Object, e As ElapsedEventArgs) _
Handles aTimer.Elapsed
eventlog.Add(String.Format("Elapsed event at {0:HH':'mm':'ss.ffffff} ({1})",
e.SignalTime,
If(nEventsFired = 0,
0.0, (e.SignalTime - previousTime).TotalMilliseconds)))
nEventsFired += 1
previousTime = e.SignalTime
if nEventsFired = 20 Then
Console.WriteLine("No more events will fire...")
aTimer.Enabled = False
End If
End Sub
End Module
' The example displays the following output:
' The timer should fire every 5 milliseconds.
' Elapsed event at 08:42:49.370344 (0)
' Elapsed event at 08:42:49.385345 (15.0015)
' Elapsed event at 08:42:49.400347 (15.0015)
' Elapsed event at 08:42:49.415348 (15.0015)
' Elapsed event at 08:42:49.430350 (15.0015)
' Elapsed event at 08:42:49.445351 (15.0015)
' Elapsed event at 08:42:49.465353 (20.002)
' Elapsed event at 08:42:49.480355 (15.0015)
' Elapsed event at 08:42:49.495356 (15.0015)
' Elapsed event at 08:42:49.510358 (15.0015)
' Elapsed event at 08:42:49.525359 (15.0015)
' Elapsed event at 08:42:49.540361 (15.0015)
' Elapsed event at 08:42:49.555362 (15.0015)
' Elapsed event at 08:42:49.570364 (15.0015)
' Elapsed event at 08:42:49.585365 (15.0015)
' Elapsed event at 08:42:49.605367 (20.002)
' Elapsed event at 08:42:49.620369 (15.0015)
' Elapsed event at 08:42:49.635370 (15.0015)
' Elapsed event at 08:42:49.650372 (15.0015)
' Elapsed event at 08:42:49.665373 (15.0015)
Se la tua app richiede una risoluzione maggiore rispetto a quella offerta dalla classe o dall'orologio Timer di sistema, usa i timer multimediali ad alta risoluzione. Vedi Procedura: Usare il timer High-Resolution.
Se l'intervallo viene impostato dopo l'avvio Timer di , il conteggio viene reimpostato. Ad esempio, se si imposta l'intervallo su 5 secondi e quindi si imposta la Enabled proprietà su true, il conteggio inizia al momento Enabled dell'impostazione. Se si reimposta l'intervallo su 10 secondi quando il conteggio è di 3 secondi, l'evento viene generato per la prima volta 13 secondi dopo Enabled l'impostazione Elapsed su true.
Se Enabled è impostato su e AutoReset è impostato true su false, Timer genera l'evento Elapsed una sola volta, la prima volta che l'intervallo viene trascorso.
Enabled viene quindi impostato su false.
Annotazioni
Se Enabled e AutoReset sono entrambi impostati su falsee il timer è stato abilitato in precedenza, l'impostazione della proprietà determina la Interval generazione dell'evento Elapsed una sola volta, come se la Enabled proprietà fosse stata impostata su true. Per impostare l'intervallo senza generare l'evento, è possibile impostare temporaneamente la Enabled proprietà su true, impostare la Interval proprietà sull'intervallo di tempo desiderato e quindi impostare immediatamente la Enabled proprietà su false.