多线程,每个线程设一个定时器,如何做到? 多线程的东西真TMD头痛。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 线程中就不必用定时器了。做个循环判断时间是否到达定时值,然后执行相关操作。定时器是附着在窗体上的。参见:UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); 用timeSetEvent吧,不需要窗口句柄的,但是timeSetEvent的个数有限制,超过16个就不行了,你可以只建一个timeSetEvent,把timeSetEvent的时间间隔设得很小,然后在线程里进行时间累加,到了时间值就认为计时时间到。这样做系统资源的消耗会小一些 SetTimer的最后一个参数是个回调函数,定一一个这样的函数,调用SetTimer时将hWnd设为NULL就可以了 线程里的函数是要不断循环的,例如下面的代码,那么SetTimer加在哪里合适?是不是还不如在doloop循环里加上sleep()?DWORD CThreadDerived::ThreadHandler(){ BOOL bCanContinue = TRUE; int nIncomingCommand; do { WaitForNotification(nIncomingCommand); switch (nIncomingCommand) { case CThread::CMD_INITIALIZE: HandleCommandImmediately(CThread::CMD_RUN); break; case CThread::CMD_RUN: Lock(); TRACE("Thread 1\n"); ::Sleep(1000); Unlock(); break; case CThread::CMD_PAUSE: SetActivityStatus(CThread::THREAD_PAUSED); break; case CThread::CMD_STOP: bCanContinue = FALSE; break; default: break; }; } while (bCanContinue); return 0; // ... if Thread task completition OK} 如果定时器的作用只是延时,用sleep算了,简单明了 窗口最大化消息 hook ZwWriteFile 获取文件名 vc调用webservice问题 怎样在单文档的视图中创建按钮呢? 请教有关制作安装程序中出现的问题(在线等) 位图怎样进行木刻处理 一个简单问题 dll中传指针参数出错 VC 中如何使用ADO动态连接SQL Server数据库?如何动态建立数据库?如何动态建立users?? 怎么生成release版本的应用程序呢? 在OnKeyDown事件中,如何拦截Ctrl + 任意其他键的工作? 想让多文档窗口的子窗口关闭按纽不可用,怎么写
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
{
BOOL bCanContinue = TRUE;
int nIncomingCommand; do
{
WaitForNotification(nIncomingCommand); switch (nIncomingCommand)
{
case CThread::CMD_INITIALIZE:
HandleCommandImmediately(CThread::CMD_RUN);
break; case CThread::CMD_RUN:
Lock();
TRACE("Thread 1\n");
::Sleep(1000);
Unlock();
break; case CThread::CMD_PAUSE:
SetActivityStatus(CThread::THREAD_PAUSED);
break; case CThread::CMD_STOP:
bCanContinue = FALSE;
break; default:
break;
}; } while (bCanContinue); return 0; // ... if Thread task completition OK
}