(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Gewusst wie: Ausführen von Prozeduren in festgelegten Abständen mit der Timer-Komponente in Windows Forms

Gelegentlich kann es erforderlich sein, eine Prozedur zu erstellen, die nach Ablauf eines festgelegten Zeitintervalls oder in bestimmten Zeitabständen bis zum Ende einer Schleife ausgeführt wird. Die Timer-Komponente ermöglicht eine solche Prozedur.

Diese Komponente ist für eine Windows Forms-Umgebung gedacht. Wenn Sie einen Zeitgeber benötigen, der für eine Serverumgebung geeignet ist, informieren Sie sich unter Introduction to Server-Based Timers.

Hinweis Hinweis

Die Verwendung der Timer-Komponente unterliegt einigen Einschränkungen. Weitere Informationen hierzu finden Sie unter Einschränkungen für die Interval-Eigenschaft der Timer-Komponente in Windows Forms.

So führen Sie eine Prozedur mit der Timer-Komponente in bestimmten Zeitintervallen aus

  1. Fügen Sie dem Formular einen Timer hinzu. Im folgenden Beispielabschnitt finden Sie eine Abbildung zum programmgesteuerten Hinzufügen einer Komponente. Visual Studio unterstützt auch das Hinzufügen von Komponenten zu einem Formular.

  2. Stellen Sie die Interval-Eigenschaft (in Millisekunden) für den Zeitgeber ein. Diese Eigenschaft bestimmt, mit welchem Zeitabstand die Prozedur erneut ausgeführt werden soll.

    Hinweis Hinweis

    Je öfter ein Zeitgeberereignis auftritt, desto mehr Prozessorzeit wird für die Reaktion auf das Ereignis aufgewendet. Dies kann die Gesamtleistung verringern. Stellen Sie kein kleineres Intervall als erforderlich ein.

  3. Schreiben Sie den entsprechenden Code in den Tick-Ereignishandler. Der in dieses Ereignis geschriebene Code wird in den Abständen ausgeführt, die in der Interval-Eigenschaft angegeben sind.

  4. Legen Sie die Enabled-Eigenschaft auf true fest, um den Zeitgeber zu starten. Das Tick-Ereignis tritt nun ein und führt die Prozedur in den eingestellten Zeitabständen aus.

  5. Legen Sie die Enabled-Eigenschaft zu gegebener Zeit wieder auf false fest, um die weitere Ausführung der Prozedur zu verhindern. Durch das Festlegen des Intervalls auf 0 wird der Zeitgeber nicht angehalten.

In diesem ersten Codebeispiel wird die Tageszeit in Schritten von jeweils einer Sekunde erfasst. Darin wird eine Komponente vom Typ Button, Label und Timer auf einem Formular verwendet. Die Interval-Eigenschaft ist auf 1000 (entspricht einer Sekunde) gesetzt. Im Tick-Ereignis ist als Beschriftung der Label-Komponente die aktuelle Zeit festgelegt. Beim Klicken auf die Schaltfläche wird die Enabled-Eigenschaft auf false gesetzt, und der Zeitgeber hört auf, die Beschriftung der Label-Komponente zu aktualisieren. Das folgende Codebeispiel setzt voraus, dass Sie über ein Formular mit einem Button-Steuerelement mit dem Namen Button1, ein Timer-Steuerelement mit dem Namen Timer1 und ein Label-Steuerelement mit dem Namen Label1 verfügen.

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

In diesem zweiten Codebeispiel wird eine Prozedur alle 600 Millisekunden bis zum Ende einer Schleife ausgeführt. Das folgende Codebeispiel setzt voraus, dass Sie über ein Formular mit einem Button-Steuerelement mit dem Namen Button1, ein Timer-Steuerelement mit dem Namen Timer1 und ein Label-Steuerelement mit dem Namen Label1 verfügen.

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


Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft