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();
    }
}
相关文章
|
2天前
|
C#
C# 异步编程:async/await 简化异步操作
`async/await` 是 C# 5.0+ 的异步编程语法糖,简化异步操作(如网络请求、文件读写),避免回调地狱。通过 `async` 标记异步方法,`await` 等待任务完成而不阻塞主线程,提升程序响应性和性能,适用于 I/O 密集型场景。
|
2天前
|
存储 缓存 安全
C# 实现带过期时间的本地缓存工具
基于ConcurrentDictionary与定时清理机制,实现线程安全的本地缓存,支持键值过期自动清除。每分钟扫描并移除过期项,有效防止内存溢出,适用于需短暂存储数据的场景,如用户会话、临时配置等,保障性能与稳定性。
|
1天前
|
人工智能 自然语言处理 API
数据合成篇|多轮ToolUse数据合成打造更可靠的AI导购助手
本文提出一种面向租赁导购场景的工具调用(Tool Use)训练数据合成方案,以支付宝芝麻租赁助理“小不懂”为例,通过“导演-演员”式多智能体框架生成拟真多轮对话。结合话题路径引导与动态角色交互,实现高质量、可扩展的合成数据生产,并构建“数据飞轮”推动模型持续优化。实验表明,该方法显著提升模型在复杂任务中的工具调用准确率与多轮理解能力。
数据合成篇|多轮ToolUse数据合成打造更可靠的AI导购助手
|
2天前
|
存储 人工智能 NoSQL
【AI大模型面试宝典十四】- 评估应用篇
【AI大模型面试宝典】聚焦RAG技术,详解检索增强生成原理:从DPR、ColBERT到FAISS实战,拆解幻觉解决、稠密检索、评估优化等高频面试题,助你精准攻克大模型面试核心考点,Offer轻松拿!
34 3
|
1天前
|
缓存 AliSQL 安全
AliSQL 向量技术解析(二):读写缓存与事务并发
本文介绍AliSQL 8.0向量索引的优化:通过Nodes Cache提升搜索效率,结合公共与事务缓存实现RC隔离级别,支持读读、读写并发,并利用预计算与SIMD加速向量计算,显著提升性能。
AliSQL 向量技术解析(二):读写缓存与事务并发
|
2天前
|
人工智能 自然语言处理 机器人
2026年AI客服产品推荐深度评测
AI客服已成企业服务核心,2026年市场规模达285亿元。本文聚焦瓴羊Quick Service等主流产品,从场景适配、技术亮点、合规资质三大维度解析,结合实测数据与收费模式,为企业提供选型指南,助力提升客户体验与运营效率。
|
1天前
|
弹性计算 人工智能 固态存储
阿里云服务器多少钱一年?整理2026年阿里云服务器新购、续费与升级配置价格费用明细
阿里云服务器主要分为轻量应用服务器、云服务器 ECS 和 GPU 服务器三类,不同类型适配不同使用场景,费用因配置、租期及计费方式存在差异。以下从新购价格、续费优惠、升级规则及额外收费项等方面,详细说明阿里云服务器的费用情况。
|
2天前
|
数据采集 缓存 安全
增量采集为什么比全量采集更难?
全量采集难在成本,增量采集难在“你不知道自己漏了什么”。一次数据丢失事故让我明白:增量本质是强状态系统,时间戳不准、分页不稳、代理差异均使其看似成功实则丢数据。我们通过回退时间窗口、允许重复抓取、唯一ID去重、成功后才更新游标来保障可回溯。工程上宁可多抓,不可漏抓。真正可靠的不是“精准增量”,而是可验证与可恢复。
|
2天前
|
存储 C#
C# 委托(Delegate):实现方法回调
委托是方法的类型,可引用方法并实现回调机制,常用于异步通知与事件触发。通过定义委托,可将方法作为参数传递,并在任务完成后调用多个回调函数,支持灵活的程序解耦与扩展。
|
2天前
|
C# 数据安全/隐私保护
C# 正则表达式:快速匹配与验证
正则表达式用于字符串模式匹配,如手机号、邮箱、密码验证等。C# 通过 `System.Text.RegularExpressions` 命名空间中的 `Regex` 类实现。本文示例展示了使用 `RegexHelper` 工具类进行常见验证:`IsPhoneNumber` 验证中国大陆手机号(1开头,共11位);`IsEmail` 校验邮箱格式;`IsValidPassword` 判断密码是否包含字母和数字且长度为8-20位;`ExtractNumbers` 提取字符串中所有数字。代码简洁高效,适用于数据校验与文本处理场景。

热门文章

最新文章