随笔 - 136  文章 - 0  评论 - 36  阅读 - 17万 

Timer类:设置一个定时器,定时执行用户指定的函数。定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。

构造函数:Timer(TimerCallback callback, object state, int dueTime, int period)
参数说明
  callback:一个 System.Threading.TimerCallback 委托,表示要执行的方法。
  state:一个包含回调方法要使用的信息的对象,或者为 null。
  dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 System.Threading.Timeout.Infinite 可防止启动计时器。指定零(0) 可立即启动计时器。
  period:调用 callback 的时间间隔(以毫秒为单位)。指定 System.Threading.Timeout.Infinite 可以禁用定期终止。

Timer.Change()方法:修改定时器的设置。(这是一个参数类型重载的方法)

示例代码:

 

复制代码
using System;
using System.Threading;

namespace ThreadExample
{
//Timer信息对象 7
class TimerObject
{
public int Counter = 0;
}

class App
{
public static void Main()
{
TimerObject s
= new TimerObject();
//创建委托对象TimerCallback,该委托将被定时调用
TimerCallback timerDelegate = new TimerCallback(CheckStatus);
//创建一个时间延时2s启动,间隔为1s的定时器
Timer timer = new Timer(timerDelegate, s, 2000, 1000);

//检查计数器值
while (s.Counter < 10)
{
Thread.Sleep(
1);
}

//更改timer执行周期,延时1s开始
timer.Change(1000, 500);
Console.WriteLine(
"Timer被加快了!");

//检查计数器值
while (s.Counter < 20)
{
Thread.Sleep(
1);
}

//释放Timer
timer.Dispose();
Console.WriteLine(
"Timer示例运行结束!");
Console.ReadLine();
}

//下面是被定时调用的方法
static void CheckStatus(Object state)
{
TimerObject s
=(TimerObject)state;
s.Counter
++;
Console.WriteLine(
"当前时间:{0} 计数器值:{1}", DateTime.Now.ToString(), s.Counter);
}
}
}
复制代码

  程序首先创建一个定时器,延时2秒启动,每隔1秒调用一次CheckStatus()方法。当调用9次以后,修改时间间隔为500毫秒,且指定在1秒后重新开始。当计数达到19次,调用Dispose()方法删除了timer对象,终止程序。

posted on   辛勤的代码工  阅读(7368)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示