导读:本期聚焦于小伙伴创作的《C# 定时器Timer有哪些常见实例?如何使用Timer实现定时任务?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C# 定时器Timer有哪些常见实例?如何使用Timer实现定时任务?》有用,将其分享出去将是对创作者最好的鼓励。

C# 提供了多种定时器Timer实现,不同Timer适用于不同的开发场景,比如桌面应用、服务端后台任务等,下面通过具体实例介绍各类Timer的使用方法。

System.Timers.Timer 实例

System.Timers.Timer 是常用的定时器类型,适合需要在指定间隔触发事件的后台任务场景,下面是一个每隔1秒输出当前时间的实例。

using System;
using System.Timers;

namespace TimerDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建定时器,设置触发间隔为1000毫秒(1秒)
            Timer timer = new Timer(1000);
            // 绑定定时触发事件
            timer.Elapsed += Timer_Elapsed;
            // 设置定时器自动重置,即每次间隔后都触发
            timer.AutoReset = true;
            // 启动定时器
            timer.Enabled = true;

            Console.WriteLine("定时器已启动,按任意键退出");
            Console.ReadKey();
            // 停止并释放定时器资源
            timer.Stop();
            timer.Dispose();
        }

        // 定时触发时执行的方法
        private static void Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            Console.WriteLine($"当前时间:{DateTime.Now}");
        }
    }
}

System.Threading.Timer 实例

System.Threading.Timer 更偏向底层线程调度,适合需要灵活控制回调方法的场景,下面是一个延迟3秒后执行,之后每隔2秒重复执行的实例。

using System;
using System.Threading;

namespace ThreadingTimerDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 第一个参数是回调方法,第二个是回调方法的参数,第三个是延迟执行时间(3秒),第四个是重复间隔(2秒)
            Timer timer = new Timer(CallbackMethod, null, 3000, 2000);

            Console.WriteLine("定时器已启动,按任意键退出");
            Console.ReadKey();
            // 释放定时器资源
            timer.Dispose();
        }

        // 定时器回调方法
        private static void CallbackMethod(object state)
        {
            Console.WriteLine($"线程定时器触发,当前时间:{DateTime.Now}");
        }
    }
}

Windows Forms 中的 Timer 实例

如果开发Windows Forms桌面应用,需要使用System.Windows.Forms.Timer,它会在UI线程上触发事件,适合更新界面元素的场景,下面是每隔500毫秒更新标签文本的实例。

using System;
using System.Windows.Forms;

namespace WinFormsTimerDemo
{
    public partial class Form1 : Form
    {
        private System.Windows.Forms.Timer uiTimer;

        public Form1()
        {
            InitializeComponent();
            InitTimer();
        }

        private void InitTimer()
        {
            uiTimer = new System.Windows.Forms.Timer();
            // 设置触发间隔为500毫秒
            uiTimer.Interval = 500;
            // 绑定触发事件
            uiTimer.Tick += UiTimer_Tick;
            // 启动定时器
            uiTimer.Start();
        }

        private void UiTimer_Tick(object sender, EventArgs e)
        {
            // 更新标签显示当前时间,因为是在UI线程执行,所以可以直接操作控件
            label1.Text = $"当前时间:{DateTime.Now:HH:mm:ss}";
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // 窗体关闭时释放定时器资源
            uiTimer.Stop();
            uiTimer.Dispose();
        }
    }
}

Timer 使用注意事项

  • 使用完Timer后要及时调用StopDispose方法释放资源,避免内存泄漏。
  • System.Timers.Timer和System.Threading.Timer的回调方法运行在后台线程,不能直接操作UI控件,需要跨线程调用时使用控件的Invoke方法。
  • 如果定时任务执行时间超过定时间隔,需要考虑任务重入问题,可以通过加锁或者设置标志位避免重复执行。
  • 设置定时间隔时,单位是毫秒,要注意数值的合理性,过短的间隔可能会导致CPU占用过高。

C#Timer定时任务多线程修改时间:2026-07-06 15:00:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。