asp网站做视频,高质量的南昌网站建设,wordpress 评论验证,北京新鸿儒做的网站写在前面
以往一般都是用 System.Timers.Timer 来做计时器#xff0c;而 System.Threading.Timer 也可以实现计时器功能#xff0c;并且还可以配置首次执行间隔#xff0c;在功能上比System.Timers.Timer更加丰富#xff1b;根据这个特性就可以实现按指定时间间隔对委托进…写在前面
以往一般都是用 System.Timers.Timer 来做计时器而 System.Threading.Timer 也可以实现计时器功能并且还可以配置首次执行间隔在功能上比System.Timers.Timer更加丰富根据这个特性就可以实现按指定时间间隔对委托进行单次调用。 执行的回调委托也是在 ThreadPool 线程上执行支持多线程运行环境。
代码实现
using System;
using System.Threading;
using System.Threading.Tasks;class Program
{private static Timer timer;static void Main(string[] args){var dueTime 1000; // 首次执行延迟时间var interval 2000; // 后续执行间隔时间var timerState new TimerState { Counter 0 };timer new Timer(callback: new TimerCallback(TimerTask),state: timerState,dueTime: dueTime,period: interval);Console.WriteLine(${DateTime.Now:yyyy-MM-dd:HH:mm:ss.fff}: 准备开始执行...);while (timerState.Counter 10){Task.Delay(1000).Wait();}timer.Dispose();Console.WriteLine(${DateTime.Now:yyyy-MM-dd:HH:mm:ss.fff}: 完成.);}private static void TimerTask(object timerState){Console.WriteLine(${DateTime.Now:yyyy-MM-dd:HH:mm:ss.fff}: 触发了一次新的回调.);var state timerState as TimerState;Interlocked.Increment(ref state.Counter);}class TimerState{// 计数器public int Counter;}
}
调用示例