Gewusst wie: Ausführen von Prozeduren in festgelegten Abständen mit der Timer-Komponente in Windows Forms
Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

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

 

In einigen Fällen möchten Sie möglicherweise eine Prozedur erstellen, die entweder in bestimmten Zeitintervallen bis zum Ende einer Schleife oder nach Ablauf eines festgelegten Zeitintervalls ausgeführt wird. Die Timer-Komponente ermöglicht eine solche Prozedur.

Diese Komponente wurde für eine Windows Forms-Umgebung entwickelt. Wenn Sie einen für eine Serverumgebung geeigneten Zeitgeber benötigen, lesen Sie die Informationen unter Introduction to Server-Based Timers.

System_CAPS_noteHinweis

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

So führen Sie eine Prozedur in festgelegten Intervallen mit der Timer-Komponente aus

  1. Fügen Sie Ihrem Formular einen Timer hinzu. Im folgenden Beispielabschnitt finden Sie eine Abbildung zur entsprechenden programmgesteuerten Vorgehensweise. Visual Studio unterstützt auch das Hinzufügen von Komponenten zu einem Formular. Lesen Sie hierzu auch Gewusst wie: Hinzufügen von Steuerelementen ohne Benutzeroberfläche zu Windows Forms.

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

    System_CAPS_noteHinweis

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

  3. Schreiben Sie den entsprechenden Code in den Tick Ereignishandler. Der in dieses Ereignis geschriebene Code wird in dem in der Interval-Eigenschaft angegebenen Intervall ausgeführt.

  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 im festgelegten Intervall aus.

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

Beispiel

In diesem ersten Codebeispiel wird die Tageszeit in 1-Sekunden-Schritten erfasst. Darin werden Komponenten vom Typ Button, Label und Timer in einem Formular verwendet. Die Interval-Eigenschaft ist auf 1000 (entspricht einer Sekunde) festgelegt. Im Tick-Ereignis ist die Beschriftung der Label-Komponente auf die aktuelle Zeit festgelegt. Wenn Sie auf die Schaltfläche klicken, wird die Enabled-Eigenschaft auf false festgelegt, sodass der Zeitgeber die Beschriftung der Label-Komponente nicht mehr aktualisiert. Im folgenden Codebeispiel wird vorausgesetzt, 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;
  }
}

Beispiel

In diesem zweiten Codebeispiel wird eine Prozedur alle 600 Millisekunden bis zum Ende einer Schleife ausgeführt. Im folgenden Codebeispiel wird vorausgesetzt, 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();
      }
}


Anzeigen:
© 2016 Microsoft