C#中Timer定时器用法实例
C#中的System.Timers.Timer常用于服务器端或需要精确控制时间的应用场景。本文将演示如何配置Timer以每隔1秒(1000毫秒)触发一次事件,并在控制台输出当前时间。该示例包含完整的初始化、事件绑定及运行循环代码。
结果与目标
实现一个后台定时器,无需外部轮询即可定期执行指定操作。在此示例中,目标是每秒钟在控制台打印一次系统当前时间,直到用户按下 'q' 键退出程序。
准备条件
- 环境:C# (.NET Framework 或 .NET Core/.NET 5+)
- 核心类:需引入
System和System.Timers命名空间。
真实操作顺序
第一步:创建Timer实例并绑定事件
目的:初始化定时器对象并关联触发时的回调函数。这是执行后续定时逻辑的基础入口。
操作:
- 声明并实例化
Timer对象。 - 将自定义的处理方法附加到
Elapsed事件上。
using System;
using System.Timers;
class TestTimer
{
public static void Main ()
{
// 1. 创建定时器实例
Timer timer = new Timer();
// 2. 绑定 Elapsed 事件处理器
timer.Elapsed += new ElapsedEventHandler(DisplayTimeEvent);
// ... 后续代码
第二步:配置参数并启动定时器
目的:设置触发频率并激活定时器进入工作状态。
操作:
- 设置
Interval属性,单位为毫秒。此处设为 1000(即1秒)。 - 调用
Start()或设置Enabled = true来启动定时器。
// 设置间隔时间为1000毫秒
timer.Interval = 1000;
// 启动定时器
timer.Start();
// 或者直接设置 enabled 属性
// timer.Enabled = true;
第三步:定义事件处理方法
目的:明确定时器触发时需要执行的具体业务逻辑。
操作:编写一个符合 ElapsedEventHandler 签名的静态方法。该方法接收 object source 和 ElapsedEventArgs e 参数。
public static void DisplayTimeEvent(object source, ElapsedEventArgs e)
{
// 获取触发时间并写入控制台
Console.Write("{0}, DateTime.Now);
}
第四步:维持主线程运行
目的:防止主程序提前结束导致进程终止。定时器运行在后台线程,因此需要一个阻塞机制来保持前台存活。
操作:在主线程中等待用户输入。
// 等待用户输入 'q' 以结束程序
while (Console.Read() != 'q')
{
//-------------
}
}
完成判断
运行程序后,若控制台每隔一秒钟刷新显示一次如 DateTime.Now 的格式的时间字符串,且按下 'q' 后可正常退出,则说明Timer配置成功。
简要总结
C#中使用System.Timers.Timer可以非常方便地实现周期性任务调度。关键在于正确理解其异步特性以及确保应用程序主生命周期足够长以覆盖定时任务的执行时间。以上就是C#中Timer定时器用法实例的详细内容,更多关于C#定时器编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













