C#中timer类的用法总结
c#中timer类的用法
关于c#中timer类 在c#里关于定时器类就有3个
1.定义在system.windows.forms里
2.定义在system.threading.timer类里
3.定义在system.timers.timer类里
system.windows.forms.timer是应用于winform中的,它是通过windows消息机制实现的,类似于vb或delphi中的timer控件,内部使用api settimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,console application(控制台应用程序)无法使用。
system.timers.timer和system.threading.timer非常类似,它们是通过.net thread pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。system.timers.timer还可以应用于winform,完全取代上面的timer控件。它们的缺点是不支持直接的拖放,需要手工编码。
例:
使用system.timers.timer类
//实例化timer类,设置间隔时间为10000毫秒;
system.timers.timer t = new system.timers.timer(10000);
//到达时间的时候执行事件;
t.elapsed += new system.timers.elapsedeventhandler(theout);
t.autoreset = true;//设置是执行一次(false)还是一直执行(true);
t.enabled = true;//是否执行system.timers.timer.elapsed事件;
====================================
自己写的一个用system.timer类的方法
public class bf_checkupdate
{
private static object lockobject = new object();
// 定义数据检查timer
private static timer checkupdatetimer = new timer();
// 检查更新锁
private static int checkupdatelock = 0;
///
/// 设定数据检查timer参数
///
internal static void gettimerstart()
{
// 循环间隔时间(10分钟)
checkupdatetimer.interval = 600000;
// 允许timer执行
checkupdatetimer.enabled = true;
// 定义回调
checkupdatetimer.elapsed += new elapsedeventhandler(checkupdatetimer_elapsed);
// 定义多次循环
checkupdatetimer.autoreset = true;
}
///
/// timer事件
///
///
///
private static void checkupdatetimer_elapsed(object sender, elapsedeventargs e)
{
// 加锁检查更新锁
lock (lockobject)
{
if (checkupdatelock == 0) checkupdatelock = 1;
else return;
}
//more code goes here.
//具体实现功能的方法
check();
// 解锁更新检查锁
lock (lockobject)
{
checkupdatelock = 0;
}
}
}
上一篇: java的IO流详细解读