当我们需要在C#中执行一些定时任务时,我们可以使用Timer计时器。在C#中,有三种不同的Timer计时器,分别是System.Timers.Timer、System.Threading.Timer和System.Windows.Forms.Timer。下面,我们将分别介绍它们的详细用法。
System.Timers.Timer
System.Timers.Timer是一个线程池的计时器,可以在一定时间间隔内反复触发事件。常用属性和方法如下:
属性
- Interval:获取或设置间隔时间,单位为毫秒。
- AutoReset:获取或设置一个值,指定计时器是否应一直定期引发事件。
- Enabled:获取或设置计时器是否应引发Elapsed事件。
- SynchronizingObject:获取或设置Object,在发生Elapsed事件时将该事件排队到事件处理程序线程上。
事件
- Elapsed:在Interval时间间隔到达时引发的事件。
示例
using System;
using System.Timers;
class Program
{
static void Main(string[] args)
{
var timer = new System.Timers.Timer(500);
timer.Elapsed += OnTimedEvent;
timer.AutoReset = true;
timer.Enabled = true;
Console.WriteLine("Timer started. Press any key to end.");
Console.ReadKey();
}
static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
Console.WriteLine("The Elapsed event was raised at {0:HH:mm:ss.fff}", e.SignalTime);
}
}
上述代码中创建了一个System.Timers.Timer计时器,每隔500毫秒就会触发OnTimedEvent事件。在OnTimedEvent中会输出当前时间。程序执行时,会不断输出当前时间,直到按下键盘任意键。
System.Threading.Timer
System.Threading.Timer是基于线程的计时器,它使用较低级别的机制进行计时,相对于System.Timers.Timer更加精确,但使用起来更加复杂。常用的构造函数和方法如下:
构造函数
- Timer(TimerCallback callback, Object state, int dueTime, int period):使用指定回调方法、状态对象、到期时间和间隔时间初始化新实例。
方法
- Change(int dueTime, int period):更改计时器的起始时间和时间间隔。
示例
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
var timer = new System.Threading.Timer(OnTimedEvent, null, 1000, 500);
Console.WriteLine("Timer started. Press any key to end.");
Console.ReadKey();
}
static void OnTimedEvent(Object obj)
{
Console.WriteLine("The Elapsed event was raised at {0:HH:mm:ss.fff}", DateTime.Now);
}
}
上述代码中创建了一个System.Threading.Timer计时器,起始时间为1000毫秒,间隔时间为500毫秒。在OnTimedEvent中会输出当前时间。程序执行时,会不断输出当前时间,直到按下键盘任意键。
System.Windows.Forms.Timer
System.Windows.Forms.Timer是在UI线程中工作的计时器。它可以自动处理多个时钟并在事件处理程序中引发Tick事件。常用属性和方法如下:
属性
- Enabled:获取或设置计时器是否应引发Tick事件。
- Interval:获取或设置间隔时间,单位为毫秒。
事件
- Tick:在Interval时间间隔到达时引发的事件。
示例
using System;
using System.Windows.Forms;
class Program
{
static void Main(string[] args)
{
var form = new Form();
var timer = new Timer { Interval = 500 };
timer.Tick += OnTimedEvent;
form.Controls.Add(timer);
timer.Start();
Application.Run(form);
void OnTimedEvent(Object obj, EventArgs e)
{
Console.WriteLine("The Tick event was raised at {0:HH:mm:ss.fff}", DateTime.Now);
}
}
}
上述代码中创建了一个System.Windows.Forms.Timer计时器,间隔时间为500毫秒。在OnTimedEvent中会输出当前时间。程序执行时,会不断输出当前时间,直到关闭窗口。
通过上述详细的介绍,我们可以了解到C#中三种不同的Timer计时器的用法,便于在实际开发中选择最合适的计时器。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中三种Timer计时器的详细用法 - Python技术站