长达一小时,一天,甚至一个月的TIMER可怎麽做?

jackzhan 2000-06-10 11:12:00
...全文
196 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-06-12
  • 打赏
  • 举报
回复
这不是用什么语言的问题。
yb 2000-06-12
  • 打赏
  • 举报
回复
如果计算机是一直开着的,可以用计数的方式来实现任意时间长的定时器(最小时间
为系统的时间分辨率),假设你是以秒为计时单位,可如下编码:
struct T{
int year;
int month;
int day;
int hour;
int minute;
int second;
}timecount;

//in time-out process function:

timecount.second++;
if( timecount.second>=60 )
{
timecount.second = 0;
timecount.minute++;
if( timecount.minute>=60 )
{
timecount.minute = 0;
timecount.hour++;
...... // process other in same way
}
}

if( timecount.month ) //计时一月
DoSomething();

这样使用计数方式来实现计时,就可以实现任意长的定时处理。
如果你的计算机不是一直开着的话,那就要取系统时间了,具体的处理和连续开机也
差不了多少。
kaiflying 2000-06-12
  • 打赏
  • 举报
回复
对了lCounter在timer事件中,要自增一:lCounter=lCounter+1
kaiflying 2000-06-12
  • 打赏
  • 举报
回复
将Timer的 Interval设为1分钟(最大65535毫秒),在form的general中定义一个form 变量(dimlCounter as long =0)然后在Timer的 事件过程中,读出lCounter的值,判断是否与期望的时间相等(以分钟计,如时间为一小时:lCounter=60),如果相等就可执行相应程序代码,如需要可重置lCounter=0.
MK 2000-06-11
  • 打赏
  • 举报
回复
用VC就很容易了!
mjyf 2000-06-10
  • 打赏
  • 举报
回复
mafangsan的思路可行.
将Timer的 Interval设为较大(如1分钟),设置计数器count=0,在Timer事件发生时,count=count+1;总时间=count(分);当满足要求时,执行事件并置count=0;
mafangsan 2000-06-10
  • 打赏
  • 举报
回复
将Timer的 Interval设为最大,约1分钟左右,先用时间函数(VB自己的,或API)读出起始时间并保存在一个变量中,然后在Timer的 事件过程中,读出当前的时间并与起始时间相减,得到已经过的时间,再判断这个差是否已满足你的一小时或更长,如满足执行需运行的程序段.
大致思路如上.
lifanxi 2000-06-10
  • 打赏
  • 举报
回复
通过读取系统时间,把它保存在一个文件或注册表中,让你的程序一开机就自动运行,随时判断是否到达预定的时间。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧