在C#中使用 System.Threading.Timer 实现定时任务

在C#中使用 System.Threading.Timer 实现定时任务 (qq.com)

 

 

 

前言

在编写应用程序过程中,高效的任务调度都是必不可少的,无论是在实现后台服务、自动化任务或者定期数据处理。在.NET中,System.Threading.Timer 类提供了一种强大而简单的方法来计划任务以特定时间间隔运行。本文将介绍如何使用System.Threading.Timer实现有效地处理周期性和延迟任务。

计时器

System.Threading.Timer 类是线程命名空间的一部分。使用它,允许我们按指定的时间间隔执行回调方法。这个计时器与其它计时器机制不同,System.Threading.Timer 使用线程池线程来执行回调,使其适用于不需要精确计时的周期性任务。

1、了解关键概念

时间间隔(period):每次执行回调方法的时间间隔(单位:毫秒);到期时间(dueTime):计时器初始化后,延迟多少时间(单位:毫秒)执行回调方法;方法参数(state):传递给回调方法的可选参数,用于传递其他信息;回调方法(Callback):要定期执行的方法,实际执行任务内容;

2、使用步骤

首先,创建计时器1、定义回调方法2、初始化 Timer 实例的到期时间、时间间隔、  回调方法及方法参数。其次,启动计时器计时器在创建时自动启动。然后,释放计时器正确处理计时器,释放不再需要的资源。

3、更改计时器间隔

使用Change方法更新到期时间或期间。

// 到期时间5秒和时间间隔2分钟
timer.Change(TimeSpan.FromSeconds(5),TimeSpan.FromMinutes(3));

 

 

4、停止计时器:

通过使用Change方法将到期时间和时间段设置为超时,实现无限停止计时器。或使用Dispose方法释放计时器资源,实现停止计时器。

// 将到期时间和时间段设置为超时
timer.Change(Timeout.Infinite, Timeout.Infinite);
// 释放计时器资源
timer.Dispose();

 

 

基本示例

如何使用 System.Threading.Timer 每分钟执行一次任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
namespace Fountain.WinConsole.OtherDemo
{
    internal class Program
    {
        // 声明计时器
        private static Timer timer;
        /// <summary>
        /// 程序入口
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //创建一个计时器,在初始延迟为1秒后每1分钟执行回调方法一次
            timer = new Timer(CallbackConsole, null, 1000, 60000);
            // 等待输入回车退出
            Console.WriteLine("按[Enter]退出。");
            // 等待接收输入
            Console.ReadLine();
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="state">回调方法参数</param>
        private static void CallbackConsole(object state)
        {
            try
            {
                Console.WriteLine($"执行方法时间: {DateTime.Now}");
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
            }
        }
    }
}

  

 

事项

1、回调方法执行的最小化耗时:  较小化耗时以避免阻塞线程池线程,如果是冗长的操作,则不建议使用。
2、处理异常:确保捕获并处理回调方法中的异常,因为未经处理的异常可能会终止应用程序。3、避免重叠执行:确保回调方法在下次调用之前完成。

小结

以上是System.Threading.Timer实现定时任务的内容,通过了解其使用,我们可以有效地管理周期性、延迟任务,优化资源使用,并确保应用程序平稳运行。希望本文能为大家有所帮助,如有不到之处,请多多包涵

posted @   LuoCore  阅读(753)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2021-08-04 C# WinForm 多线程启动提示 DragDrop 注册失败
点击右上角即可分享
微信分享提示