定时器的使用说明

Net框架下有多种定时器,下面是其中两种使用的说明

一、system.timers.timer

1、普通使用,每隔一段时间执行一次,缺点:如果执行任务时间大于间隔时间,会造成多次启动定时器

private void Start()
{

System.Timers.Timer oTimer = new System.Timers.Timer(60 * 60 * 1000);
oTimer.Elapsed += new ElapsedEventHandler(AmWork);
oTimer.AutoReset = true;
oTimer.Enabled = true;

}

public void AmWork(object source, ElapsedEventArgs e)
{
Console.WriteLine("I‘m working.");
}

2、防止多次启动使用,执行的时候,停止定时器,执行完毕之后,开启定时器

public void Start()
{
System.Timers.Timer oTimer = new System.Timers.Timer(2*1000);
Action<object, System.Timers.ElapsedEventArgs> amWork = (sender, e) =>
{
oTimer.Stop();
Console.WriteLine("working:" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
System.Threading.Thread.Sleep(5000);
oTimer.Start();
};
oTimer.Elapsed += new System.Timers.ElapsedEventHandler(amWork);
oTimer.AutoReset = true;
oTimer.Enabled = true;

}

二、System.Threading.Timer定时器:不但可以设置间隔时间,也可以设置第一次执行间隔时间,有助于程序启动时,自定义第一次执行间隔时间
1、普通使用

System.Threading.Timer timer = null;
Action<object> timerHandler = state =>
{
Console.WriteLine("working:" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
};

timer = new System.Threading.Timer(new System.Threading.TimerCallback(timerHandler), null, 1000, 2000);

2、防止多次启动使用,但使用了Change之后,change执行间隔时间,必须使用第一次执行时间,好像有点问题

System.Threading.Timer timer = null;
Action<object> timerHandler = state =>
{
timer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite); //可防止上次任务没有执行完毕,重启计时器
Console.WriteLine("working:" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
timer.Change(3000, 3000);
};

timer = new System.Threading.Timer(new System.Threading.TimerCallback(timerHandler), null, 1000, 1000);

时间: 2024-11-29 02:37:25

定时器的使用说明的相关文章

jmeter常数吞吐量定时器Constant Throughput Timer使用说明

一.压测误区 1.在线程组中设置了线程数.启动时间.循环时间就以为可以完成并发,其实不然 2.如下述说明: 二.解决办法 1.参考了一些博客,在线程组中添加常数吞吐量定时器Constant Throughput Timer即可解决问题 2.以下为常数吞吐量定时器Constant Throughput Timer使用说明:转载自 https://blog.csdn.net/shuimengzhen/article/details/57075437 *************************

VxWorks6.6 pcPentium BSP 使用说明(三):设备驱动

本文主要介绍了pcPentium BSP中包含的驱动程序.包含了官方提供的所有驱动程序,除了aic7888Lib--现在已用得很少的一个AIC-7888 SCSI控制器的驱动介绍.建议重点阅读ataDrv和ataShow部分,其他部分可以略看. BSP通过VxBus的驱动合集和老的非VxBus驱动来支持设备.此版本中,VxBus是默认配置,非VxBus驱动程序支持已被删除. VxBus驱动遵循VxWorks 6.2中引进的总线模型.在此模型中,VxBus提供大部分功能,这在以前是需要放入BSP文

(三)通用定时器的定时功能(不使用中断)

通用定时器使用说明: 1.配置TIMx时钟:其中TIM1和TIM8挂在APB2总线上,TIM2-TIM7则挂在APB1总线上: 2.定时器TIMx基本配置:时基单位的配置:包括:TIM_Period(设置自动重装载寄存器,当计数值达到这个寄存器锁存数值时,溢出产生事件).TIM_Prescaler(设置预分频数,此参数决定了定时器的计数频率).TIM_CounterMode(设置计数模式).TIM_ClockDivision(设置时间分割值,特殊场合才会用到,一般不用): 3.记得使能TIMx,

Android通用脱壳工具DexHunter的原理分析和使用说明(二)

本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53715325 前面的博文<Android通用脱壳工具DexHunter的原理分析和使用说明(一)>中已经记录了很多关于DexHunter脱壳工具的脱壳原理和思考的思路问题并没有涉及到DexHunter脱壳工具的代码的分析,今天我就代码分析.理解和DexHunter脱壳工具的使用以及需要注意的地方进行博文的记录. 在阅读DexHunter的代码之前,复习下几个须知: 1>.

Delphi中SendMessage使用说明 good

Delphi中SendMessage使用说明 SendMessage基础知识 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回. 函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam): 参数: hWnd:其窗口程序将接收消息的窗口的句柄.如果此参数为HWND_BRO

二,ESP8266 GPIO和SPI和定时器和串口

让这个灯亮 我们写lua用这个软件 链接:http://pan.baidu.com/s/1kVN09cr 密码:pfv7 http://www.cnblogs.com/yangfengwu/p/6247048.html   这个有点使用说明 这个灯连接到了GPIO2,低电平点亮 [html] view plain copy gpio.mode(4,gpio.OUTPUT)--输出模式 gpio.write(4,0)--输出低电平 这两句话就亮了 可能会有疑问,明明是GPIO2为什么填4 看资料

SpringBoot-ElasticJob封装快速上手使用(分布式定时器)

elastic-job-spring-boot qq交流群:812321371 1 简介 Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成.Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务. 基于quartz定时任务框架为基础的,因此具备quartz的大部分功能 使用zookeeper做协调,调度中心,更加轻量级 支持任务的分片 支持弹性扩容,可以

Android零基础入门第60节:日历视图CalendarView和定时器Chronometer

原文:Android零基础入门第60节:日历视图CalendarView和定时器Chronometer 上一期学习了AnalogClock.DigitalClock和TextClock时钟组件,本期继续来学习日历视图CalendarView和定时器Chronometer. 一.CalendarView 日历视图(CalendarView)可用于显示和选择日期,用户既可选择一个日期,也可通过触 摸来滚动日历.如果希望监控该组件的日期改变,则可调用CalendarView的 setOnDateCha

发送短信验证码按钮 定时器

static int i = 29; @property(nonatomic,strong) NSTimer *timmer;//定时器 - (void)sendNumber{ NSLog(@"发送验证码"); self.getTelephoneCodeBtn.enabled = NO; [self.getTelephoneCodeBtn setTitle:@"已发送" forState:UIControlStateDisabled]; [self.getTelep