Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A volte potrebbe essere necessario creare una routine eseguita a intervalli di tempo specifici fino al termine di un ciclo o che viene eseguito quando è trascorso un intervallo di tempo impostato. Il componente Timer rende possibile tale procedura.
Questo componente è progettato per un ambiente Windows Form. Se è necessario un timer adatto per un ambiente server, vedere Introduction to Server-Based Timers.
Annotazioni
Esistono alcune limitazioni quando si usa il componente Timer. Per altre informazioni, vedere Limitazioni della proprietà Interval del componente Timer delle Windows Forms.
Per eseguire una routine a intervalli impostati con il componente Timer
Aggiungere un Timer al modulo. Vedere la sezione Esempio seguente per un'illustrazione di come eseguire questa operazione a livello di codice. Visual Studio include anche il supporto per l'aggiunta di componenti a un modulo. Vedere anche Procedura: Aggiungere controlli senza un'interfaccia utente a Windows Form.
Imposta la proprietà Interval (in millisecondi) per il timer. Questa proprietà determina quanto tempo passerà prima che la procedura venga eseguita di nuovo.
Annotazioni
Più spesso si verifica un evento timer, maggiore è il tempo del processore usato per rispondere all'evento. Ciò può rallentare le prestazioni complessive. Non impostare un intervallo più piccolo di quello necessario.
Scrivere il codice appropriato nel gestore eventi Tick. Il codice scritto in questo evento verrà eseguito all'intervallo specificato nella proprietà Interval.
Imposti la proprietà Enabled su
true
per avviare il timer. L'evento Tick inizierà a verificarsi, eseguendo la procedura all'intervallo impostato.Al momento appropriato, impostare la proprietà Enabled su
false
per interrompere l'esecuzione della procedura. L'impostazione dell'intervallo su0
non comporta l'arresto del timer.
Primo esempio di codice
Questo primo esempio di codice tiene traccia dell'ora del giorno in incrementi di un secondo. Usa un Button, un Labele un Timer su un modulo. La proprietà Interval è impostata su 1000 (uguale a un secondo). Nell'evento Tick, la didascalia dell'etichetta viene aggiornata per mostrare l'ora corrente. Quando si fa clic sul pulsante, la proprietà Enabled è impostata su false
, impedendo al timer di aggiornare la didascalia dell'etichetta. Nell'esempio di codice seguente, è necessario disporre di un form con un controllo Button denominato Button1
, un controllo Timer denominato Timer1
e un controllo Label denominato Label1
.
Private Sub InitializeTimer()
' Run this procedure in an appropriate event.
' Set to 1 second.
Timer1.Interval = 1000
' Enable timer.
Timer1.Enabled = True
Button1.Text = "Enabled"
End Sub
x
Private Sub Timer1_Tick(ByVal Sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
' Set the caption to the current time.
Label1.Text = DateTime.Now
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Button1.Text = "Stop" Then
Button1.Text = "Start"
Timer1.Enabled = False
Else
Button1.Text = "Stop"
Timer1.Enabled = True
End If
End Sub
private void InitializeTimer()
{
// Call this procedure when the application starts.
// Set to 1 second.
Timer1.Interval = 1000;
Timer1.Tick += new EventHandler(Timer1_Tick);
// Enable timer.
Timer1.Enabled = true;
Button1.Text = "Stop";
Button1.Click += new EventHandler(Button1_Click);
}
private void Timer1_Tick(object Sender, EventArgs e)
{
// Set the caption to the current time.
Label1.Text = DateTime.Now.ToString();
}
private void Button1_Click(object sender, EventArgs e)
{
if ( Button1.Text == "Stop" )
{
Button1.Text = "Start";
Timer1.Enabled = false;
}
else
{
Button1.Text = "Stop";
Timer1.Enabled = true;
}
}
private:
void InitializeTimer()
{
// Run this procedure in an appropriate event.
// Set to 1 second.
timer1->Interval = 1000;
// Enable timer.
timer1->Enabled = true;
this->timer1->Tick += gcnew System::EventHandler(this,
&Form1::timer1_Tick);
button1->Text = S"Stop";
this->button1->Click += gcnew System::EventHandler(this,
&Form1::button1_Click);
}
void timer1_Tick(System::Object ^ sender,
System::EventArgs ^ e)
{
// Set the caption to the current time.
label1->Text = DateTime::Now.ToString();
}
void button1_Click(System::Object ^ sender,
System::EventArgs ^ e)
{
if ( button1->Text == "Stop" )
{
button1->Text = "Start";
timer1->Enabled = false;
}
else
{
button1->Text = "Stop";
timer1->Enabled = true;
}
}
Secondo esempio di codice
Questo secondo esempio di codice esegue una routine ogni 600 millisecondi fino al termine di un ciclo. Nell'esempio di codice seguente, è necessario disporre di un form con un controllo Button denominato Button1
, un controllo Timer denominato Timer1
e un controllo Label denominato Label1
.
' This variable will be the loop counter.
Private counter As Integer
Private Sub InitializeTimer()
' Run this procedure in an appropriate event.
counter = 0
Timer1.Interval = 600
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If counter => 10 Then
' Exit loop code.
Timer1.Enabled = False
counter = 0
Else
' Run your procedure here.
' Increment counter.
counter = counter + 1
Label1.Text = "Procedures Run: " & counter.ToString
End If
End Sub
// This variable will be the loop counter.
private int counter;
private void InitializeTimer()
{
// Run this procedure in an appropriate event.
counter = 0;
timer1.Interval = 600;
timer1.Enabled = true;
// Hook up timer's tick event handler.
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
}
private void timer1_Tick(object sender, System.EventArgs e)
{
if (counter >= 10)
{
// Exit loop code.
timer1.Enabled = false;
counter = 0;
}
else
{
// Run your procedure here.
// Increment counter.
counter = counter + 1;
label1.Text = "Procedures Run: " + counter.ToString();
}
}
private:
int counter;
void InitializeTimer()
{
// Run this procedure in an appropriate event.
counter = 0;
timer1->Interval = 600;
timer1->Enabled = true;
// Hook up timer's tick event handler.
this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
}
void timer1_Tick(System::Object ^ sender,
System::EventArgs ^ e)
{
if (counter >= 10)
{
// Exit loop code.
timer1->Enabled = false;
counter = 0;
}
else
{
// Run your procedure here.
// Increment counter.
counter = counter + 1;
label1->Text = String::Concat("Procedures Run: ",
counter.ToString());
}
}
Vedere anche
- Timer
- Componente timer
- Panoramica del componente timer
.NET Desktop feedback