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();
    }
}
相关文章
|
XML Android开发 数据格式
IDEA代码格式和JavaDoc设置,一键告别丑陋代码
IDEA代码格式和JavaDoc设置,一键告别丑陋代码
2623 1
IDEA代码格式和JavaDoc设置,一键告别丑陋代码
|
9月前
|
存储 算法 C#
C# 哈希值计算:MD5/SHA256 加密
本示例展示了C#中使用MD5和SHA256算法生成哈希值的方法,适用于密码加密与数据校验。MD5安全性较低,建议仅用于非敏感场景;密码存储推荐使用SHA256配合盐值以增强安全性。
|
9月前
|
C#
C# 异步编程:async/await 简化异步操作
`async/await` 是 C# 5.0+ 的异步编程语法糖,简化异步操作(如网络请求、文件读写),避免回调地狱。通过 `async` 标记异步方法,`await` 等待任务完成而不阻塞主线程,提升程序响应性和性能,适用于 I/O 密集型场景。
|
9月前
|
JSON API C#
C# 实现简单的 HTTP 请求工具(GET/POST)
HTTP请求工具用于调用第三方API,支持GET和POST方法,实现数据获取与提交。示例代码展示通过HttpClient发送异步POST请求,处理响应并解析JSON结果,适用于高效集成外部服务。
|
9月前
|
存储 缓存 安全
C# 实现带过期时间的本地缓存工具
基于ConcurrentDictionary与定时清理机制,实现线程安全的本地缓存,支持键值过期自动清除。每分钟扫描并移除过期项,有效防止内存溢出,适用于需短暂存储数据的场景,如用户会话、临时配置等,保障性能与稳定性。
|
9月前
|
缓存 AliSQL 安全
AliSQL 向量技术解析(二):读写缓存与事务并发
本文介绍AliSQL 8.0向量索引的优化:通过Nodes Cache提升搜索效率,结合公共与事务缓存实现RC隔离级别,支持读读、读写并发,并利用预计算与SIMD加速向量计算,显著提升性能。
AliSQL 向量技术解析(二):读写缓存与事务并发
|
9月前
|
C#
C# 实现简单的 Excel 数据写入工具
基于EPPlus库实现C#将数据写入Excel文件,支持自定义表头与多行数据,自动调整列宽,操作简便,适用于非商业场景的数据导出需求。
|
9月前
|
人工智能 自然语言处理 机器人
2026年AI客服产品推荐深度评测
AI客服已成企业服务核心,2026年市场规模达285亿元。本文聚焦瓴羊Quick Service等主流产品,从场景适配、技术亮点、合规资质三大维度解析,结合实测数据与收费模式,为企业提供选型指南,助力提升客户体验与运营效率。