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();
    }
}
相关文章
|
1月前
|
C#
C# 异步编程:async/await 简化异步操作
`async/await` 是 C# 5.0+ 的异步编程语法糖,简化异步操作(如网络请求、文件读写),避免回调地狱。通过 `async` 标记异步方法,`await` 等待任务完成而不阻塞主线程,提升程序响应性和性能,适用于 I/O 密集型场景。
|
1月前
|
存储 缓存 安全
C# 实现带过期时间的本地缓存工具
基于ConcurrentDictionary与定时清理机制,实现线程安全的本地缓存,支持键值过期自动清除。每分钟扫描并移除过期项,有效防止内存溢出,适用于需短暂存储数据的场景,如用户会话、临时配置等,保障性能与稳定性。
|
1月前
|
人工智能 自然语言处理 API
数据合成篇|多轮ToolUse数据合成打造更可靠的AI导购助手
本文提出一种面向租赁导购场景的工具调用(Tool Use)训练数据合成方案,以支付宝芝麻租赁助理“小不懂”为例,通过“导演-演员”式多智能体框架生成拟真多轮对话。结合话题路径引导与动态角色交互,实现高质量、可扩展的合成数据生产,并构建“数据飞轮”推动模型持续优化。实验表明,该方法显著提升模型在复杂任务中的工具调用准确率与多轮理解能力。
308 43
数据合成篇|多轮ToolUse数据合成打造更可靠的AI导购助手
|
7月前
|
人工智能 测试技术 Go
Go 语言的主流框架
本文全面解析了 Go 语言主流技术生态,涵盖 Web 框架、微服务、数据库工具、测试与部署等多个领域。重点介绍了 Gin、Echo、Beego 等高性能框架,以及 gRPC-Go、Go-Micro 等微服务组件。同时分析了 GORM、Ent 等 ORM 工具与测试部署方案,并结合场景提供选型建议,助力开发者构建高效稳定的 Go 应用。
2006 0
|
1月前
|
弹性计算 人工智能 固态存储
阿里云服务器多少钱一年?整理2026年阿里云服务器新购、续费与升级配置价格费用明细
阿里云服务器主要分为轻量应用服务器、云服务器 ECS 和 GPU 服务器三类,不同类型适配不同使用场景,费用因配置、租期及计费方式存在差异。以下从新购价格、续费优惠、升级规则及额外收费项等方面,详细说明阿里云服务器的费用情况。
|
5月前
|
存储 SQL 人工智能
Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新)
Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新)
2432 3
Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新)
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
903 0
|
SQL Java 数据库
2、Mybatis-Plus 测试增、删、改、查
这篇文章是关于使用Mybatis-Plus进行数据库的增删改查操作的本地测试,包括创建数据库表、添加数据、创建使用lombok的实体类、添加mapper接口以及编写测试代码进行基本的数据库操作验证。
2、Mybatis-Plus 测试增、删、改、查
winform实现最小化至系统托盘
winform实现最小化至系统托盘
214 0