Como: Executar procedimentos em intervalos em conjunto com o componente do Windows Forms Timer
Às vezes, convém criar um procedimento que é executado em intervalos de tempo específico até um loop foi concluída ou que é executado quando um intervalo de tempo definido tiver decorrido. O Timer componente faz com que tal um procedimento possíveis.
Este componente destina-se um ambiente do Windows Forms. Se você precisar de um temporizador que é adequado para um ambiente de servidor, consulte Introduction to Server-Based Timers.
Observação |
---|
Existem algumas limitações ao usar o Timer componente. Para obter mais informações, consulte Limitações de propriedade do intervalo do componente do Windows Forms Timer. |
Para executar um procedimento em intervalos em conjunto com o componente Timer
Adicionar um Timer ao seu formulário. Consulte a seção de exemplo a seguir para obter uma ilustração de como fazer isso programaticamente. Visual Studiotambém tem suporte para adicionar componentes a um formulário. Para obter mais informações, consulte Como: Adicionar controles sem uma interface de usuário do Windows Forms e Como: Adicionar controles sem uma interface de usuário do Windows Forms e Como: Adicionar controles sem uma interface de usuário do Windows Forms e Como: Adicionar controles sem uma interface de usuário ao Windows Forms e Como: Adicionar controles sem Interface do usuário para Windows Forms.
Definir o Interval a propriedade (em milissegundos) para o timer. Esta propriedade determina quanto tempo passará antes que o procedimento é executado novamente.
Observação Mais freqüentemente um evento timer ocorre, mais tempo do processador é usado em responder ao evento. Isso pode diminuir o desempenho geral. Não defina um intervalo menor do que o necessário.
Escrever o código apropriado no Tick manipulador de eventos. O código que você escreve neste evento será executado no intervalo especificado na Interval propriedade.
Definir o Enabled propriedade para true para iniciar o timer. O Tick evento irá começar a ocorrer, executando o procedimento no intervalo de conjunto.
No momento apropriado, defina a Enabled propriedade para false para interromper o procedimento seja executado novamente. Definir o intervalo para 0 não faz com que o timer de parar.
Exemplo
Neste primeiro exemplo de código registra a hora do dia em incrementos de um segundo. Ele usa um Button, um Labele um Timer o componente em um formulário. O Interval for definida como 1000 (igual a um segundo). No Tick o evento, a legenda do rótulo é definida para a hora atual. Quando o botão é clicado, o Enabled for definida como false, interrompendo o cronômetro de atualizar de legenda. o rótulo O exemplo de código a seguir requer que você tenha um formulário com um Button controle chamado Button1, um Timer controle chamado Timer1e um Label controle chamado 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;
}
}
Este segundo exemplo de código executa um procedimento cada 600 milissegundos até termina de um loop. O exemplo de código a seguir requer que você tenha um formulário com um Button controle chamado Button1, um Timer controle chamado Timer1e um Label controle chamado 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();
}
}
// Run this procedure in an appropriate event.
counter = 0;
timer1.set_Interval(600);
timer1.set_Enabled(true);
// Wire up timer's tick event handler.
this.timer1.add_Tick(new System.EventHandler(this.timer1_Tick));
private void timer1_Tick(System.Object sender, System.EventArgs e)
{
if ( counter >= 10 )
{
// Exit loop code.
timer1.set_Enabled(false);
counter = 0;
}
else
{
// Run your procedure here.
// Increment counter.
counter = counter + 1;
this.timer1.add_Tick(new System.EventHandler(this.timer1_Tick));
}
}
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());
}
}
Consulte também
Referência
Timer Component Overview (Windows Forms)