.Net 自定义定时器

    public class MyTimer
    {
        
        public MyTimer(TimerCallback callback, object? state, int dueTime, int period)
        {
            
            Callback = callback;
            DueTime = dueTime;
            Period = period;
        }
        public TimerCallback Callback { get; set; }
        /// <summary>
        /// 开始循环计时
        /// </summary>
        public int DueTime { get; set; }
        /// <summary>
        /// 循环周期
        /// </summary>
        public int Period { get; set; }

        public CancellationTokenSource cst { get; set; }

        public void Start()
        {
            Task.Run(() => {
                // 设置线程优先级
                Thread.CurrentThread.Priority = ThreadPriority.Highest;
                cst = new CancellationTokenSource();
                while (!cst.IsCancellationRequested)
                {
                    Callback(null);
                    Thread.Sleep(Period);
                }
            });
        }
        public void Stop()
        {
            if(cst != null)cst.Cancel();
        }
    }
MyTimer timer = new MyTimer(Handler,null,-1,250);
// 定时器启动
timer.Start();
// 定时器停止
timer.Stop();


public void Handler(object sender)
{
    byte[] byteData;
    lock (Definition.P_Lock)
    {
        Definition.P_Transmit("182756f4", byteData);//new byte[] { 0x69,0x19,0xC4,0x09,0x01,0x3C,0x64,0x50});
    }
}

 

posted @ 2025-10-20 14:38  妖言惑众'  阅读(3)  评论(0)    收藏  举报