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

jackie_xie 2011-09-09 01:45:12
一个多线程多任务的系统,每个任务都采用每天定时自动运行的操作,比如10点 12点 3点等时间段检测到有任务的话就自动运行, 请问怎么样创建一个函数来实现这个功能,BCB中的Timer类怎么做来实现 和时间的同步,怎么做自动检测的功能呢?
...全文
183 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩南_哥 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();然后自己判断

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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