C# 设置一个定时器函数

C#中,创建设置一个定时器,能够定时中断执行特定操作,可以用于发送心跳、正计时和倒计时等。

本文对C#的定时器简单封装一下,哎,以方便定时器的创建。

定义

csharp 复制代码
using Timer = System.Timers.Timer;

class SetTimer
{
    Timer aTimer = null;

    /// <summary>
    /// 设置定时器函数
    /// </summary>
    public delegate void TimerWork(object source, ElapsedEventArgs e);

    /// <summary>
    /// 每隔 interval/1000 秒 发送控制器心跳信号
    /// </summary>
    /// <param name="interval">时间间隔,单位是毫秒</param>
	/// <param name="work">定义的需要触发的函数</param>
    public SetTimer(int interval, TimerWork work)
    {
        // 创建一个定时器
        aTimer = new Timer(interval);

        // 绑定触发事件.
        aTimer.Elapsed += new System.Timers.ElapsedEventHandler(work);

        aTimer.AutoReset = true;    // 让计时器触发重复事件(true是默认值)
        aTimer.Enabled = true;      // 启动 timer,与aTimer.Start()同
    }
    /// <summary>
    /// 停止计时
    /// </summary>
    public void Stop()
    {
        if (aTimer != null)
        {
            aTimer.Enabled = false; // 停止计时
            aTimer.Dispose();       // 释放资源
            aTimer = null;          // 设为空值
        }
    }
}

应用

csharp 复制代码
static void Main(string[] args)
{
    int second = 0;
    // 此处也可以定义一个对象名,然后在某时刻关闭它。
    new SetTimer(1000, (source, e) =>
    {
        Console.Write(second++);
    });
}
相关推荐
.NET修仙日记5 小时前
Acme.ReturnOh:让.NET API返回值处理更优雅,统一响应格式一步到位
c#·.net·webapi
阿蒙Amon7 小时前
C#常用类库-详解YamlDotNet
开发语言·c#
Sunsets_Red9 小时前
乘法逆元的 exgcd 求法
c++·学习·数学·算法·c#·密码学·信息学竞赛
唐青枫10 小时前
深入理解 C#.NET TaskScheduler:为什么大量使用 Work-Stealing
c#·.net
人工智能AI技术10 小时前
Claude 3.7 企业版私有化部署技术验证:与 .NET 实战方案
人工智能·c#
呆子也有梦10 小时前
思考篇:积分是存成道具还是直接存数值?——ET/Skynet 框架下,从架构权衡到代码实现全解析
游戏·架构·c#·lua
我是唐青枫11 小时前
深入理解 C#.NET Task.Run:调度原理、线程池机制与性能优化
性能优化·c#·.net
阿蒙Amon11 小时前
C#常用类库-详解NModbus4
开发语言·c#
LFly_ice11 小时前
C# Web 开发从入门到实践
开发语言·前端·c#
猹叉叉(学习版)11 小时前
【ASP.NET CORE】 14. RabbitMQ、洋葱架构
笔记·后端·架构·c#·rabbitmq·asp.net·.netcore