在C#中,主要有三种类型的Timer:
System.Windows.Forms.Timer
System.Timers.Timer
System.Threading.Timer
以下是每种Timer的简要说明和示例:
1. System.Windows.Forms.Timer
用于Windows Forms应用程序,适合在UI线程中使用。
csharp
using System;
using System.Windows.Forms;
public class WinFormsTimerExample : Form
{
private Timer timer;
public WinFormsTimerExample()
{
timer = new Timer();
timer.Interval = 1000; // 1秒
timer.Tick += new EventHandler(OnTimerEvent);
timer.Start();
}
private void OnTimerEvent(Object sender, EventArgs e)
{
Console.WriteLine("WinForms Timer ticked at: " + DateTime.Now);
}
[STAThread]
public static void Main()
{
Application.Run(new WinFormsTimerExample());
}
}
2. System.Timers.Timer
适用于需要更精确的计时和跨线程操作的场景。
csharp
using System;
using System.Timers;
public class TimersTimerExample
{
private static Timer timer;
public static void Main()
{
timer = new Timer(1000); // 1秒
timer.Elapsed += OnTimedEvent;
timer.AutoReset = true;
timer.Enabled = true;
Console.WriteLine("Press Enter to exit the program...");
Console.ReadLine();
}
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
Console.WriteLine("Timers Timer ticked at: " + e.SignalTime);
}
}
3. System.Threading.Timer
用于多线程环境,可以在任何线程上执行回调。
csharp
using System;
using System.Threading;
public class ThreadingTimerExample
{
private static Timer timer;
public static void Main()
{
TimerCallback callback = new TimerCallback(OnTimerEvent);
timer = new Timer(callback, null, 0, 1000); // 1秒
Console.WriteLine("Press Enter to exit the program...");
Console.ReadLine();
}
private static void OnTimerEvent(Object state)
{
Console.WriteLine("Threading Timer ticked at: " + DateTime.Now);
}
}
通过这些示例,可以快速掌握每种Timer的使用场景和方法。