
1.vb中timer怎么用
打开比方,timer如同一个循环语句,它的循环变量是时间,即每隔一段时间,就执行一次timer中的语句。
例如:
1、在窗体上添加一个timer控件,默认名称为Timer1。
2、将Timer1的Interval属性设置为1000,即每隔1000毫秒(1秒)触发一次。
3、在Timer1的Timer()事件中编写如下代码
Private Sub Timer1_Timer()
Print Time
End Sub
4、运行该程序,窗体上每隔1秒就会输出一次系统当前时间。
2.timer怎么用Timer 控件方案:响应 Timer 事件
经历了 Timer 控件的时间间隔后,Visual Basic 将生成 Timer 事件。通常,在响应此事件时将检查某些一般条件,例如系统时钟。
数字型时钟是涉及 Timer 控件的简单而有用的应用程序。一旦理解此应用程序的工作方式,就可增强它的性能,实现闹钟、跑表或其它定时设备的功能。
Digital Clock 应用程序包含一个定时器和一个有边框的标签。
定时器在运行时不可见。下表列出了 Digital Clock 应用程序中的属性设置值。
控件 属性 设置值
Label1 BorderStyle Fixed Single
Timer1 Interval 500(半秒)
Timer1 Enabled True
应用程序中的唯一过程是定时器的事件过程:
Private Sub Timer1_Timer ()
If lblTime.Caption CStr(Time) Then
lblTime.Caption = Time
End If
End Sub
过程调用内在的 Time 函数来显示系统时间。此函数返回一个 Variant,以日期/时间数值 (VarType 7) 的形式包含当前时间。将它赋予某个字符串变量或属性时,比如赋予本例中的 Caption 属性时,Visual Basic 将用“控制面板”中指定的格式将其转换成一个字符串。若要用其它格式显示,可使用 Format 函数。
详细信息 请参阅“Format 属性”。
将定时器的 Interval 属性设置为 500,按照上述原则将 Interval 设置为要区分的最短时间(本例中为一秒钟)的一半。这会使 Timer 控件代码每半秒更新一次标签。这样做不仅浪费而且可能导致视觉颤动,因此代码在改变标题之前要检查当前时间是否与在标签上显示的时间不同。
无需另外编写语句就可自定义数字时钟的外观。例如,可为标签选择其它字体或改变窗体的 BorderStyle 属性。
3.如何正确使用Timer在需要按时间计划执行简单任务的情况下,Timer是最常被使用到的工具类。
使用Timer来调度TimerTask的实现者来执行任务,有两种方式,一种是使任务在指定时间被执行一次,另一种是从某一指定时间开始周期性地执行任务。下面是一个简单的Timer例子,它每隔10秒钟执行一次特定操作doWork。
Timer timer = new Timer(); TimerTask task = new TimerTask (){ public void run() { doWork(); } }; timer.schedule (task, 10000L, 10000L); 可以看到,具体的任务由TimerTask的子类实现,Timer负责管理、执行TimerTask。Timer 的使用 在不同的场景下,需要使用不同的Timer接口。
如上所说,主要区分两种情况1) 在指定时间执行任务,只执行一次- public void schedule(TimerTask task, long delay)- public void schedule(TimerTask task, Date time)2)从指定时间开始,周期性地重复执行,直到任务被cancel掉。其中又分两种类型:2.1) 一种是按上一次任务执行的时间为依据,计算本次执行时间,可以称为相对时间法。
比如,如果第一次任务是1分10秒执行的,周期为5秒,因系统繁忙(比如垃圾回收、虚拟内存切换),1分15秒没有得到机会执行,直到1分16秒才有机会执行第二次任务,那么第3次的执行时间将是1分21秒,偏移了1秒。- public void schedule(TimerTask task, long delay, long period)- public void schedule(TimerTask task, Date firstTime, long period)2.2) 另一种是绝对时间法,以用户设计的起始时间为基准,第n次执行时间为“起始时间+n*周期时间”。
比如,在上面的情况下,虽然因为系统繁忙,第二执行时间被推后1秒,但第3次的时间点仍然应该是1分20秒。- public void scheduleAtFixedRate(TimerTask task, long delay, long period)- public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 相对时间法,关注于满足短时间内的执行间隔,绝对时间法,则更关注在一个长时间范围内,任务被执行的次数。
如果我们要编写一个程序,用timer控制文档编辑器中提示光标的闪烁,用哪种更合适? 当然是相对时间法。如果改用绝对时间法,当从系统繁忙状态恢复后,光标会快速连续闪烁多次,以弥补回在系统繁忙期间没有被执行的任务,这样的情况会用户来说比较难以接受。
又如,每10分钟检查一次新邮件的到来,也适合于使用相对时间法。Timer timer = new Timer(); TimerTask task = new TimerTask (){ public void run() { displayCursor(); } }; timer.schedule (task, 1000L, 1000L); //每秒闪烁一次光标 作为对比,我们来考虑一种绝对时间法的应用场景——倒数任务,比如,要求在10秒内做倒数计时,每秒做一次doworkPerSecond操作,10秒结束时做一次doworkEnd操作,然后结束任务。
Timer timer = new Timer(); TimerTask task = new TimerTask (){ private int count=10; public void run() { if(count>0){ doWorkPerSecond(); count--; }else{ doWorkEnd(); cancel(); } } }; timer. scheduleAtFixedRate (task, 1000L, 1000L); Timer及相关类的内部实现- Timer的内部会启动一个线程TimerThread。即使有多个任务被加入这个Timer,它始终只有一个线程来管理这些任务。
- TimerThread是Thread的子类。加入Timer的所有任务都会被最终放入TimerThread所管理的TaskQueue中。
TimerThread会不断查看TaskQueue中的任务,取出当前时刻应该被执行的任务执行之,并且会重新计算该任务的下一次执行时间,重新放入TaskQueue。直到所有任务执行完毕(单次任务)或者被cancel(重复执行的任务),该线程才会结束。
- TaskQueue,由数组实现的二叉堆,堆的排序是以任务的下一次执行时间为依据的。二叉堆的使用使得TimerThread以简洁高效的方式快速找到当前时刻需要执行的TimerTask,因为,堆排序的特性是保证最小(或者最大)值位于堆叠顶端,在这里,queue[1]始终是下次执行时间(nextExecutionTime)最小的,即应该最先被执行的任务 比如,同一个timer管理两个任务task1和task2 timer.schedule (task1, 4000L, 10000L); timer. scheduleAtFixedRate (task2, 2000L, 15000L); 则,TaskQueue中会有两个任务:task1和task2。
task2会排在头部queue[1],当task2执行时间到,task2被执行,同时修改其nextExecutionTime =当前的nextExecutionTime +15000L(绝对时间法)并重新在二叉堆中排序。排序后,task1被放到头部。
当task1执行时间到,task1被执行,并修改其nextExecutionTime =当前时间+10000L,然后重新在二叉堆中对其排序……… 一个例子 当收到客户端请求时,服务端生成一个Response对象。服务端希望客户端访问该对象的间隔时间不能超过20秒,否则,服务端认为客户端已经异常关闭或者网络异常,此时销毁掉该对象并打印错误日志。
每次访问都会重新开始计时。class Response{ private TimerTask timeout; public void init(){ ……… Timer timer = new Timer(); timeout = new TimeOutTask(); timer.schedule (timeout, 20000L); } public void invoke(){ timeout.cancel();//取消当前的timeout任务 ….timeout = new TimeOutTask(); timer.schedule (timeout, 20000L);//重。
4.timer的用法public Form1()
{
InitializeComponent();
}
这句不用理会
this.timer1.Interval = 1000;
设置timer1对象的事件触发间隔。
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
为timer1对象绑定事件,该处应用委托的方式,委托的定义百度一下就知道了。
private void timer1_Tick(object sender, EventArgs e)
{
if (time > -1)
{
time--;
this.label1.Text = time.ToString();
//this.label1.Refresh();
}
else
{
timer1.Stop();
}
}
上述委托方法的实现,原意让label1现实倒计时,由10递减,没见个1秒刷新显示。
5.如何用汇编语言写一个循环彩灯的程序,采用定时器方式1工作由89CORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN:MOV TMOD,#01HMOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0SETB ET0SETB EAMOV R2,#0SJMP $T0ISR:CLR TR0MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0MOV A,R0CJNE A,#18,T001MOV R0,#0T001:MOV DPTR,#LEDTABMOVC A,@A+DPTRMOV P1,AINC R0RETILEDTAB:DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00HDB 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFHDB 00H,0FFHEND。
6.java 中timer类的用法是什么现在项目中用到需要定时去检查文件是否更新的功能。timer正好用于此处。
用法很简单,new一个timer,然后写一个timertask的子类即可。
package comz.autoupdatefile;
import java.util.Timer;
import java.util.TimerTask;
public class M {
public static void main(String[] args) {
// TODO todo.generated by zoer
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);
}
}
class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("dddd");
}
}
这样,就可以在1秒钟之后开始执行mytask,每两秒钟执行一次。
当然,timer的功能也可以通过自己构造线程,然后在线程中用sleep来模拟停止一段时间,然后再执行某个动作。
其实,看一下timertask的源码就立即可以知道,timertask就是实现了runnable接口的。也就是说,通过timer来间隔一段时间执行一个操作,也是通过一个线程来做到的。
7.vb timer控件的用法简单的说Timer是一个时间的控件,不能说Timer的值等于2秒时,因为Timer相当于时间,只能说当Timer跳动两秒时触发某事件。
例如:
1、在窗体上添加一个timer控件,默认名称为Timer1。
2、将Timer1的Interval属性设置为1000,即每隔1000毫秒(1秒)触发一次。
3、在Timer1的Timer()事件中编写如下代码
Private Sub Timer1_Timer()
Print Time
End Sub
4、运行该程序,窗体上每隔1秒就会输出一次系统当前时间。
扩展资料:
具体代码如下:
首先要确定启动控件
Me.Timer1.Enabled = True "启动控件
Me.Timer1.Interval = 1000 "设定跳动频为1秒。1000=1秒
dim sTime as string=0
然后在控件的 Timer1.Tick事件下写下面的代码
sTime=stime+1
if sTime=2 then
"你所要触发事件的代码
msgbox("OK")
end if
参考资料:百度百科—C语言
8.timer怎么用Timer是一个控件,用于事件方面的应用Timer控件主要会用到2个属性一个是Enabled和IntervalEnabled主要是控制当前Timer控件是否可用timer1.Interval主要是设置timer2_Tick事件的时间,单位为毫秒到9:00提示去上厕所:(把timer2.Interval=60000;//1分钟private void timer2_Tick(object sender, System.EventArgs e){ string cesuotime=DateTime.Now.DateTime.Now.ToShortTimeString();//得到现在的时间 if(cesuotime.equles("9:00")){ timer1.Enabled=false; MessageBox.show("该去上厕所了"); timer1.Enabled=true;//如果不先把enabled设置成false对话框会一直弹下去 }}。
9.java 中 如何使用Timer现在项目中用到需要定时去检查文件是否更新的功能。
timer正好用于此处。用法很简单,new一个timer,然后写一个timertask的子类即可。
package comz.autoupdatefile;import java.util.Timer;import java.util.TimerTask;public class M { public static void main(String[] args) { // TODO todo.generated by zoer Timer timer = new Timer(); timer.schedule(new MyTask(), 1000, 2000); }}class MyTask extends TimerTask { @Override public void run() { System.out.println("dddd"); }}这样,就可以在1秒钟之后开始执行mytask,每两秒钟执行一次。当然,timer的功能也可以通过自己构造线程,然后在线程中用sleep来模拟停止一段时间,然后再执行某个动作。
其实,看一下timertask的源码就立即可以知道,timertask就是实现了runnable接口的。也就是说,通过timer来间隔一段时间执行一个操作,也是通过一个线程来做到的。






