急急~~~~ 一个BCB定时器的问题

jackie_xie 2011-09-09 01:45:12
一个多线程多任务的系统,每个任务都采用每天定时自动运行的操作,比如10点 12点 3点等时间段检测到有任务的话就自动运行, 请问怎么样创建一个函数来实现这个功能,BCB中的Timer类怎么做来实现 和时间的同步,怎么做自动检测的功能呢?
...全文
141 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
浩南_哥 2011-09-09
CreateWaitableTimer;//创建可等待计时器
SetWaitableTimer,CancelWaitableTimer;
具体函数怎么用看MSDN

//以下代码吧计时器的第一次触发时间设定为2008年1月1日下午1:00,之后每隔6小时触发一次
HANDLE hTimer;
SYSTEMTIME st;
FILETIME ftLocal, ftUTC;
LARGE_INTEGER liUTC;

// Create an auto-reset timer.
hTimer = CreateWaitableTimer(NULL, FALSE, NULL);

// First signaling is at January 1, 2008, at 1:00 P.M. (local time).
st.wYear = 2008; // Year
st.wMonth = 1; // January
st.wDayOfWeek = 0; // Ignored
st.wDay = 1; // The first of the month
st.wHour = 13; // 1PM
st.wMinute = 0; // 0 minutes into the hour
st.wSecond = 0; // 0 seconds into the minute
st.wMilliseconds = 0; // 0 milliseconds into the second

SystemTimeToFileTime(&st, &ftLocal);

// Convert local time to UTC time.
LocalFileTimeToFileTime(&ftLocal, &ftUTC);
// Convert FILETIME to LARGE_INTEGER because of different alignment.
liUTC.LowPart = ftUTC.dwLowDateTime;
liUTC.HighPart = ftUTC.dwHighDateTime;

// Set the timer.
SetWaitableTimer(hTimer, &liUTC, 6 * 60 * 60 * 1000,
NULL, NULL, FALSE); ...

以上代码摘自<windows核心编程>第五版
回复
zzbinfo 2011-09-09
怎么能用Sleep呢??就弄个Timer定时器就行 ,每分钟检查一下时间不就行了
回复
jackie_xie 2011-09-09
用Sleep来设置时间段,还是有其他的方法?
回复
zzbinfo 2011-09-09
隔一定的时间获取一下本地时间然后判断,获取时间用Now();然后自己判断
回复
相关推荐
发帖
VCL组件使用和开发
创建于2007-08-02

587

社区成员

C++ Builder VCL组件使用和开发
申请成为版主
帖子事件
创建了帖子
2011-09-09 01:45
社区公告
暂无公告