在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 每分钟执行一次任务。

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 @ 2024-08-04 09:43  LuoCore  阅读(632)  评论(0编辑  收藏  举报