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();
    }
}
相关文章
|
10月前
|
存储 算法 C#
C# 哈希值计算:MD5/SHA256 加密
本示例展示了C#中使用MD5和SHA256算法生成哈希值的方法,适用于密码加密与数据校验。MD5安全性较低,建议仅用于非敏感场景;密码存储推荐使用SHA256配合盐值以增强安全性。
|
10月前
|
C#
C# 异步编程:async/await 简化异步操作
`async/await` 是 C# 5.0+ 的异步编程语法糖,简化异步操作(如网络请求、文件读写),避免回调地狱。通过 `async` 标记异步方法,`await` 等待任务完成而不阻塞主线程,提升程序响应性和性能,适用于 I/O 密集型场景。
|
Web App开发 安全 Windows
解决:对COM 组件的调用返回了错误 HRESULT E_FAIL
  调用SHDOCVW(web浏览器) COM组件的时候,返回了错误 HRESULT E_FAIL。总结如下:     1. 在控制面板--->管理工具--->服务 中,开启Distributed Transaction Coordinator 服务。
8033 0
|
10月前
|
JSON API C#
C# 实现简单的 HTTP 请求工具(GET/POST)
HTTP请求工具用于调用第三方API,支持GET和POST方法,实现数据获取与提交。示例代码展示通过HttpClient发送异步POST请求,处理响应并解析JSON结果,适用于高效集成外部服务。
|
7月前
|
C#
C# switch语句的用法详解
C#中switch语句用于多分支选择,根据表达式值匹配case执行对应代码块。支持整型、枚举类型,需遵守case值为常量、break防穿透等规则,default为可选默认分支。
|
10月前
|
存储 缓存 安全
C# 实现带过期时间的本地缓存工具
基于ConcurrentDictionary与定时清理机制,实现线程安全的本地缓存,支持键值过期自动清除。每分钟扫描并移除过期项,有效防止内存溢出,适用于需短暂存储数据的场景,如用户会话、临时配置等,保障性能与稳定性。
|
10月前
|
C#
C# 实现简单的 Excel 数据写入工具
基于EPPlus库实现C#将数据写入Excel文件,支持自定义表头与多行数据,自动调整列宽,操作简便,适用于非商业场景的数据导出需求。
|
编解码 Ubuntu 算法
Ubuntu桌面图标指南:一文了解如果设置ubuntu 软件图标
Ubuntu桌面图标指南:一文了解如果设置ubuntu 软件图标
5792 0