C# 实现简单的定时任务工具

简介: 基于 `System.Timers.Timer` 实现定时任务,支持周期性与单次执行。通过封装 Timer 类,提供启动、停止功能,并包含异常处理,确保任务稳定运行,适用于后台定时操作场景。

基于 System.Timers.Timer 实现定时执行任务,支持重复执行和单次执行。

using System.Timers;
public class ScheduledTask
{
    private readonly Timer _timer;
    private readonly Action _taskAction;
    private bool _isSingleShot;
    // 构造函数:初始化定时任务
    public ScheduledTask(double intervalMs, Action task, bool isSingleShot = false)
    {
        _timer = new Timer(intervalMs);
        _taskAction = task;
        _isSingleShot = isSingleShot;
        _timer.Elapsed += OnTimerElapsed;
        _timer.AutoReset = !isSingleShot;
    }
    private void OnTimerElapsed(object sender, ElapsedEventArgs e)
    {
        try
        {
            Console.WriteLine($"任务执行时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
            _taskAction.Invoke();
            if (_isSingleShot)
            {
                Stop();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"任务执行失败: {ex.Message}");
        }
    }
    // 启动任务
    public void Start()
    {
        _timer.Start();
        Console.WriteLine("定时任务已启动");
    }
    // 停止任务
    public void Stop()
    {
        _timer.Stop();
        Console.WriteLine("定时任务已停止");
    }
    // 调用示例
    public static void TestTask()
    {
        // 每5秒执行一次打印任务
        var task = new ScheduledTask(5000, () => {
            Console.WriteLine("这是定时执行的任务内容");
        });
        task.Start();
        // 按任意键停止
        Console.ReadKey();
        task.Stop();
    }
}
相关文章
|
7月前
|
存储 算法 C#
C# 哈希值计算:MD5/SHA256 加密
本示例展示了C#中使用MD5和SHA256算法生成哈希值的方法,适用于密码加密与数据校验。MD5安全性较低,建议仅用于非敏感场景;密码存储推荐使用SHA256配合盐值以增强安全性。
|
7月前
|
JSON API C#
C# 实现简单的 HTTP 请求工具(GET/POST)
HTTP请求工具用于调用第三方API,支持GET和POST方法,实现数据获取与提交。示例代码展示通过HttpClient发送异步POST请求,处理响应并解析JSON结果,适用于高效集成外部服务。
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】
|
7月前
|
C#
C# 异步编程:async/await 简化异步操作
`async/await` 是 C# 5.0+ 的异步编程语法糖,简化异步操作(如网络请求、文件读写),避免回调地狱。通过 `async` 标记异步方法,`await` 等待任务完成而不阻塞主线程,提升程序响应性和性能,适用于 I/O 密集型场景。
|
7月前
|
C#
C# 实现简单的 Excel 数据写入工具
基于EPPlus库实现C#将数据写入Excel文件,支持自定义表头与多行数据,自动调整列宽,操作简便,适用于非商业场景的数据导出需求。
|
7月前
|
存储 缓存 安全
C# 实现带过期时间的本地缓存工具
基于ConcurrentDictionary与定时清理机制,实现线程安全的本地缓存,支持键值过期自动清除。每分钟扫描并移除过期项,有效防止内存溢出,适用于需短暂存储数据的场景,如用户会话、临时配置等,保障性能与稳定性。
|
监控 Java 应用服务中间件
什么是 Spring Boot,及为什么要用 Spring Boot
**Spring Boot**: 2013年起研,简化Spring笨重配置,集成常用库,开箱即用,少代码配置,专注业务。 **为何选Spring Boot?** 出色基因,快速搭建;单一依赖替多;Java Config简化配置;内嵌Tomcat,简化部署;监控REST化;微服务友好,趋势之选。
948 27
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
1221 0