C# System.Threading.Timer
提供以指定的时间间隔对线程池线程执行方法的机制
using System;
using System.Threading; class TimerExample
{
static void Main()
{
// Create an AutoResetEvent to signal the timeout threshold in the
// timer callback has been reached.
var autoEvent = new AutoResetEvent(false); var statusChecker = new StatusChecker(); // Create a timer that invokes CheckStatus after one second,
// and every 1/4 second thereafter.
Console.WriteLine("{0:h:mm:ss.fff} Creating timer.\n",
DateTime.Now);
var stateTimer = new Timer(statusChecker.CheckStatus,
autoEvent, , ); // When autoEvent signals, change the period to every half second.
autoEvent.WaitOne();
stateTimer.Change(, );
Console.WriteLine("\nChanging period to .5 seconds.\n"); // When autoEvent signals the second time, dispose of the timer.
autoEvent.WaitOne();
stateTimer.Dispose();
Console.WriteLine("\nDestroying timer.");
}
} class StatusChecker
{
private int invokeCount;
private int maxCount; public StatusChecker(int count)
{
invokeCount = ;
maxCount = count;
} // This method is called by the timer delegate.
public void CheckStatus(Object stateInfo)
{
AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
Console.WriteLine("{0} Checking status {1,2}.",
DateTime.Now.ToString("h:mm:ss.fff"),
(++invokeCount).ToString()); if(invokeCount == maxCount)
{
// Reset the counter and signal the waiting thread.
invokeCount = ;
autoEvent.Set();
}
}
}
// The example displays output like the following:
// 11:59:54.202 Creating timer.
//
// 11:59:55.217 Checking status 1.
// 11:59:55.466 Checking status 2.
// 11:59:55.716 Checking status 3.
// 11:59:55.968 Checking status 4.
// 11:59:56.218 Checking status 5.
// 11:59:56.470 Checking status 6.
// 11:59:56.722 Checking status 7.
// 11:59:56.972 Checking status 8.
// 11:59:57.223 Checking status 9.
// 11:59:57.473 Checking status 10.
//
// Changing period to .5 seconds.
//
// 11:59:57.474 Checking status 1.
// 11:59:57.976 Checking status 2.
// 11:59:58.476 Checking status 3.
// 11:59:58.977 Checking status 4.
// 11:59:59.477 Checking status 5.
// 11:59:59.977 Checking status 6.
// 12:00:00.478 Checking status 7.
// 12:00:00.980 Checking status 8.
// 12:00:01.481 Checking status 9.
// 12:00:01.981 Checking status 10.
//
// Destroying timer.
using System;
using System.Threading; class TimerExample
{
public static int loop_index = ;
public static AutoResetEvent autoEvent = new AutoResetEvent(false); static void Main()
{
int loop_count = ; // Create an AutoResetEvent to signal the timeout threshold in the
// timer callback has been reached. // Create a timer that invokes CheckStatus after one second,
// and every 1/4 second thereafter.
Console.WriteLine("{0:h:mm:ss.fff} Creating timer.\n",
DateTime.Now);
var stateTimer = new Timer(show,
autoEvent, , ); // When autoEvent signals, change the period to every half second.
autoEvent.WaitOne();
stateTimer.Change(, );
Console.WriteLine("\nChanging period to .5 seconds.\n"); // When autoEvent signals the second time, dispose of the timer.
autoEvent.WaitOne();
stateTimer.Dispose();
Console.WriteLine("\nDestroying timer.");
} public static void show(Object stateInfo)
{
Console.WriteLine("{0:h:mm:ss.fff} Run in Show.\n",
DateTime.Now);
Console.WriteLine(loop_index);
loop_index = loop_index + ;
if (loop_index > )
{
autoEvent.Set();
}
}
}
构造函数
| Timer(TimerCallback) | |
| Timer(TimerCallback, Object, Int32, Int32) | 
 使用 32 位的有符号整数指定时间间隔,初始化   | 
| Timer(TimerCallback, Object, Int64, Int64) | 
 用 64 位有符号整数来度量时间间隔,以初始化   | 
| Timer(TimerCallback, Object, TimeSpan, TimeSpan) | 
 初始化   | 
| Timer(TimerCallback, Object, UInt32, UInt32) | 
 用 32 位无符号整数来度量时间间隔,以初始化   | 
方法
| Change(Int32, Int32) | 
 更改计时器的启动时间和方法调用之间的间隔,用 32 位有符号整数度量时间间隔。  | 
| Change(Int64, Int64) | 
 更改计时器的启动时间和方法调用之间的间隔,用 64 位有符号整数度量时间间隔。  | 
| Change(TimeSpan, TimeSpan) | 
 更改计时器的启动时间和方法调用之间的时间间隔,使用 TimeSpan 值度量时间间隔。  | 
| Change(UInt32, UInt32) | 
 更改计时器的启动时间和方法调用之间的间隔,用 32 位无符号整数度量时间间隔。  | 
| CreateObjRef(Type) | 
 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (Inherited from MarshalByRefObject)  | 
| Dispose() | 
 释放由 Timer 的当前实例使用的所有资源。  | 
| Dispose(WaitHandle) | 
 释放 Timer 的当前实例使用的所有资源并在释放完计时器时发出信号。  | 
| Equals(Object) | 
 确定指定的对象是否等于当前对象。 (Inherited from Object)  | 
| GetHashCode() | 
 作为默认哈希函数。 (Inherited from Object)  | 
| GetLifetimeService() | 
 检索控制此实例的生存期策略的当前生存期服务对象。 (Inherited from MarshalByRefObject)  | 
| GetType() | 
 获取当前实例的 Type。 (Inherited from Object)  | 
| InitializeLifetimeService() | 
 获取生存期服务对象来控制此实例的生存期策略。 (Inherited from MarshalByRefObject)  | 
| MemberwiseClone() | 
 创建当前 Object 的浅表副本。 (Inherited from Object)  | 
| MemberwiseClone(Boolean) | 
 创建当前 MarshalByRefObject 对象的浅表副本。 (Inherited from MarshalByRefObject)  | 
| ToString() | 
 返回表示当前对象的字符串。 (Inherited from Object)  | 
C# System.Threading.Timer的更多相关文章
- System.Threading.Timer 定时器的用法
		
System.Threading.Timer 是C# 中的一个定时器,可以定时(不断循环)执行一个任务.它是在线程上执行的,具有很好的安全性.为此 .Net Framework 提供了5个重载的构造 ...
 - C#  System.Threading.Timer 使用方法
		
public class TimerHelper { System.Threading.Timer timer; public TaskSendMMS tasksendmms { get; set; ...
 - System.Threading.Timer使用心得
		
System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高. "只要在使用 Timer,就必须保留对它的引用."对于任何托 ...
 - System.Threading.Timer 使用
		
//定义计时器执行完成后的回调函数 TimerCallback timecallback = new TimerCallback(WriteMsg); //定义计时器 System.Threading ...
 - System.Threading.Timer的使用技巧
		
转自:http://www.360doc.com/content/11/0812/11/1039473_139824496.shtml# System.Threading.Timer timer = ...
 - System.Threading.Timer如何正确地被Dispose
		
System.Threading.Timer是.NET中一个定时触发事件处理方法的类(本文后面简称Timer),它背后依靠的是.NET的线程池(ThreadPool),所以当Timer在短时间内触发了 ...
 - System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的 区别和用法
		
System.Windows.Forms.Timer执行的时候,如果你在过程中间加一个sleep整个的界面就死掉了,但是另外两个没有这个情况,System.Timers.Timer.System.Th ...
 - System.Threading.Timer
		
GLog.WLog("_thdTimer before"); _thdTimer = new System.Threading.Timer(new TimerCallback(Ti ...
 - 当时钟事件声明为过程变量 让system.threading.timer时钟失效
		
这个项目的小模块就是画label 控件到tablepayoutpanel表单 之中, 中间用到了时钟,事件(带返回值的),哈希表 .由于时钟定义在 form1的启动构造函数中导致了form1,启动完毕 ...
 - c# 多线程之-- System.Threading Timer的使用
		
作用:每隔多久去执行线程里的方法. class ThreadTimerDemo { static void Main(string[] args) { // Create an AutoResetEv ...
 
随机推荐
- Noj - 在线强化训练2
			
状态 题号 竞赛题号 标题 1572 A 九鼎之尊(一) 1573 B 九鼎之尊(二) 1453 C 筛法(Sieve Method) 1134 D 亲密数(close numbers ...
 - sql的with as用法
			
http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152667.html
 - poj 1386 Play on Words门上的单词【欧拉回路&&并查集】
			
题目链接:http://poj.org/problem?id=1386 题目大意:给你若干个字符串,一个单词的尾部和一个单词的头部相同那么这两个单词就可以相连,判断给出的n个单词是否能够一个接着一个全 ...
 - Linux学习之源码包安装与脚本安装(十八)
			
Linux学习之源码包安装与脚本安装 目录 源码包与RPM包的区别 源码包安装 脚本安装 源码包与RPM包的区别 1.区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 源码包: 开源的 ...
 - SpringMVC(三十) 实例:SpringMVC_RESTRUL_CRUD_显示所有员工信息
			
Step by step to create a springMVC demo. 1. 创建一个dynamic web 工程. 2. 添加需要的jar文件,如下图: 3. 配置web.xml:配置di ...
 - linux 学习笔记 tail 命令
			
#tail -f -n 100 catalina.out 含义:从文件尾部监视catalina.out文件 主要看尾部100行 #tail -f -n 100 catalina.out > n ...
 - 关于如何在ElementUI中实现统计Table筛选结果数量
			
在开发单位自己的系统时,领导提了这个需求,在看了ElementUI发现并没有实现这个功能. 遂向官方求解,得回复:自己在filter-method 中实现.于是便有了思路. 这里本人使用了一个比较暴力 ...
 - Ubantu17.10 上安装gitlab
			
http://www.jianshu.com/p/92f97939e33a 亲测成功
 - [PA2014]Muzeum
			
[PA2014]Muzeum 题目大意: 有\(n\)件展品和\(m\)个警卫,每件展品有一个坐标\((x_i,y_i)\)和价值\(v_i\),每个警卫的坐标为\((x_i,y_i)\).每个警卫面 ...
 - [ZJOI2012]波浪
			
Description: L = | P2 – P1 | + | P3 – P2 | + - + | PN – PN-1 | 给你一个N和M,问:随机一个1-N的排列,它的波动强度(L)不小于M的概率 ...