Suche…
Syntax
-
myTimer.Interval-myTimer.Intervalwie oft das "Tick"myTimer.Interval(in Millisekunden) aufgerufen wird -
myTimer.Enabled- boolescher Wert, mit dem der Timer aktiviert / deaktiviert wird -
myTimer.Start()- Startet den Timer. -
myTimer.Stop()- Stoppt den Timer.
Bemerkungen
Bei Verwendung von Visual Studio können Timer aus der Toolbox direkt als Steuerelement Ihrem Formular hinzugefügt werden.
Multithread-Timer
System.Threading.Timer - Einfachster Multithread-Timer. Enthält zwei Methoden und einen Konstruktor.
Beispiel: Ein Timer ruft die DataWrite-Methode auf, die nach Ablauf von fünf Sekunden "Multithread ausgeführt ..." schreibt, und danach jede Sekunde, bis der Benutzer die Eingabetaste drückt:
using System;
using System.Threading;
class Program
{
static void Main()
{
// First interval = 5000ms; subsequent intervals = 1000ms
Timer timer = new Timer (DataWrite, "multithread executed...", 5000, 1000);
Console.ReadLine();
timer.Dispose(); // This both stops the timer and cleans up.
}
static void DataWrite (object data)
{
// This runs on a pooled thread
Console.WriteLine (data); // Writes "multithread executed..."
}
}
Hinweis: Wird einen separaten Abschnitt zum Entsorgen von Multithread-Timern bereitstellen.
Change - Diese Methode kann aufgerufen werden, wenn Sie das Timerintervall ändern möchten.
Timeout.Infinite - Wenn Sie nur einmal feuern möchten. Geben Sie dies im letzten Argument des Konstruktors an.
System.Timers - Eine andere von .NET Framework bereitgestellte System.Timers . Es System.Threading.Timer den System.Threading.Timer .
Eigenschaften:
-
IComponent- Ermöglicht dasIComponentin der Komponentenleiste des Designer von Visual Studio -
Intervalstatt einerChangeMethode -
Elapsedeventstatt eines Callback -delegate -
EnabledEigenschaft zum Starten und Stoppen des Timers (default value = false) -
Start&StopMethoden für den Fall, dass Sie durch dieEnabledEigenschaft (über Punkt) verwirrt werden -
AutoReset- zum Anzeigen eines wiederkehrenden Ereignisses (default value = true) -
SynchronizingObjectEigenschaft mitInvokeundBeginInvokeMethoden für die sichere Methoden auf WPF - Elemente aufrufen und Windows Forms - Steuerelemente
Beispiel für alle oben genannten Funktionen:
using System;
using System.Timers; // Timers namespace rather than Threading
class SystemTimer
{
static void Main()
{
Timer timer = new Timer(); // Doesn't require any args
timer.Interval = 500;
timer.Elapsed += timer_Elapsed; // Uses an event instead of a delegate
timer.Start(); // Start the timer
Console.ReadLine();
timer.Stop(); // Stop the timer
Console.ReadLine();
timer.Start(); // Restart the timer
Console.ReadLine();
timer.Dispose(); // Permanently stop the timer
}
static void timer_Elapsed(object sender, EventArgs e)
{
Console.WriteLine ("Tick");
}
}
Multithreaded timers - Verwenden Sie den Thread-Pool, um einigen Threads zu ermöglichen, viele Timer zu bedienen. Das bedeutet, dass die Callback-Methode oder das Elapsed Ereignis bei jedem Aufruf eines anderen Threads ausgelöst werden kann.
Elapsed - Dieses Ereignis wird immer rechtzeitig Elapsed - unabhängig davon, ob die Ausführung des vorherigen Elapsed Ereignisses abgeschlossen ist. Aus diesem Grund müssen Rückrufe oder Ereignishandler threadsicher sein. Die Genauigkeit von Multithread-Timern hängt vom Betriebssystem ab und beträgt normalerweise 10–20 ms.
interop - Wenn Sie eine höhere Genauigkeit benötigen, verwenden Sie diese interop und rufen Sie den Windows-Multimedia-Timer auf. Dies hat eine Genauigkeit von bis zu 1 ms und ist in winmm.dll definiert.
timeBeginPeriod - Rufen Sie diese timeBeginPeriod zuerst auf, um das Betriebssystem darüber zu informieren, dass Sie eine hohe Timing-Genauigkeit benötigen
timeSetEvent - Rufen Sie nach timeBeginPeriod diese timeBeginPeriod auf, um einen Multimedia-Timer zu starten.
timeKillEvent - rufe dies auf, wenn du fertig bist, und der Timer wird timeKillEvent
timeEndPeriod - Rufen Sie dies auf, um das Betriebssystem darüber zu informieren, dass Sie keine hohe Timing-Genauigkeit mehr benötigen.
Sie finden vollständige Beispiele im Internet, die den Multimedia-Timer verwenden, indem Sie nach den Schlüsselwörtern dllimport winmm.dll timesetevent .
Instanz eines Timers erstellen
Zeitgeber werden verwendet, um Aufgaben in bestimmten Zeitabständen auszuführen (Do X alle Y Sekunden). Nachfolgend ein Beispiel zum Erstellen einer neuen Instanz eines Zeitgebers.
HINWEIS : Dies gilt für Zeitgeber, die WinForms verwenden. Wenn Sie WPF verwenden, möchten Sie vielleicht einen Blick auf DispatcherTimer werfen
using System.Windows.Forms; //Timers use the Windows.Forms namespace
public partial class Form1 : Form
{
Timer myTimer = new Timer(); //create an instance of Timer named myTimer
public Form1()
{
InitializeComponent();
}
}
Zuweisen des "Tick" -Ereignishandlers zu einem Timer
Alle Aktionen, die in einem Timer ausgeführt werden, werden im Ereignis "Tick" behandelt.
public partial class Form1 : Form
{
Timer myTimer = new Timer();
public Form1()
{
InitializeComponent();
myTimer.Tick += myTimer_Tick; //assign the event handler named "myTimer_Tick"
}
private void myTimer_Tick(object sender, EventArgs e)
{
// Perform your actions here.
}
}
Beispiel: Einen Timer verwenden, um einen einfachen Countdown auszuführen.
public partial class Form1 : Form
{
Timer myTimer = new Timer();
int timeLeft = 10;
public Form1()
{
InitializeComponent();
//set properties for the Timer
myTimer.Interval = 1000;
myTimer.Enabled = true;
//Set the event handler for the timer, named "myTimer_Tick"
myTimer.Tick += myTimer_Tick;
//Start the timer as soon as the form is loaded
myTimer.Start();
//Show the time set in the "timeLeft" variable
lblCountDown.Text = timeLeft.ToString();
}
private void myTimer_Tick(object sender, EventArgs e)
{
//perform these actions at the interval set in the properties.
lblCountDown.Text = timeLeft.ToString();
timeLeft -= 1;
if (timeLeft < 0)
{
myTimer.Stop();
}
}
}
Ergebnisse in ...
Und so weiter...

