zoukankan
html css js c++ java
线程中Timer类使用(摘自cnblogs)
下面这段程序演示了Timer类的用法。
using
System;
using
System.Threading;
class
TimerExampleState
{
public
int
counter
=
0
;
public
Timer tmr;
}
class
App
{
public
static
void
Main()
{
TimerExampleState s
=
new
TimerExampleState();
//
创建代理对象TimerCallback,该代理将被定时调用
TimerCallback timerDelegate
=
new
TimerCallback(CheckStatus);
//
创建一个时间间隔为1s的定时器
Timer timer
=
new
Timer(timerDelegate, s,
1000
,
1000
);
s.tmr
=
timer;
//
主线程停下来等待Timer对象的终止
while
(s.tmr
!=
null
)
Thread.Sleep(
0
);
Console.WriteLine(
"
Timer example done.
"
);
Console.ReadLine();
}
//
下面是被定时调用的方法
static
void
CheckStatus(Object state)
{
TimerExampleState s
=
(TimerExampleState)state;
s.counter
++
;
Console.WriteLine(
"
{0} Checking Status {1}.
"
, DateTime.Now.TimeOfDay, s.counter);
if
(s.counter
==
5
)
{
//
使用Change方法改变了时间间隔
(s.tmr).Change(
5000
,
2000
);
Console.WriteLine(
"
changed
"
);
}
if
(s.counter
==
10
)
{
Console.WriteLine(
"
disposing of timer
"
);
s.tmr.Dispose();
s.tmr
=
null
;
}
}
}
程序首先创建了一个定时器,它将在创建1秒之后开始每隔1秒调用一次CheckStatus()方法,当调用5次以后,在CheckStatus()方法中修改了时间间隔为2秒,并且指定在5秒后重新开始。当计数达到10次,调用Timer.Dispose()方法删除了timer对象,主线程于是跳出循环,终止程序。
查看全文
相关阅读:
Hibernate Validator
RocketMQ之八:重试队列,死信队列,消息轨迹
使用hibernate validator出现
Hibernate Validator--创建自己的约束规则
Java应用中使用ShutdownHook友好地清理现场、退出JVM的2种方法
笔者带你剖析轻量级Sharding中间件——Kratos1.x
[caffe]深度学习之图像分类模型VGG解读
类的载入机制
机器人api(图灵机器人)
回文串问题总结
原文地址:https://www.cnblogs.com/xiaobaigang/p/930238.html
最新文章
[转]MSBuild Target Framework and Target Platform
cp命令
网络监控之一:netstat命令 linux和window上使用介绍
echo命令
df 命令-显示目前磁盘剩余的磁盘空间
du 命令 -目前的目录所占的磁盘空间
more命令
cat命令详解
linux tail 命令详解
常见hash算法的原理
热门文章
linux grep命令
ps命令,性能监控,grep命令
HashSet中是如何判断元素是否重复的
RocketMQ之六:RocketMQ消息存储
java程序怎么在一个电脑上只启动一次,只开一个进程
RocketMQ之七:RocketMQ管理与监控
信息过滤与反垃圾
泛型的基本介绍和使用
自己写的基于java Annotation(注解)的数据校验框架
JSR-303规范,Bean Validation
Copyright © 2011-2022 走看看