Suche…
Syntax
-
myTimer.Interval
-myTimer.Interval
wie 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 dasIComponent
in der Komponentenleiste des Designer von Visual Studio -
Interval
statt einerChange
Methode -
Elapsed
event
statt eines Callback -delegate
-
Enabled
Eigenschaft zum Starten und Stoppen des Timers (default value = false
) -
Start
&Stop
Methoden für den Fall, dass Sie durch dieEnabled
Eigenschaft (über Punkt) verwirrt werden -
AutoReset
- zum Anzeigen eines wiederkehrenden Ereignisses (default value = true
) -
SynchronizingObject
Eigenschaft mitInvoke
undBeginInvoke
Methoden 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...