我的思路是:写一个带sleep(1)的死循环,这样cpu占用率就不会那么高,然后用timeSetEvent函数定义一个定时器,每次到达定时时间就去执行某些操作,但是我的程序每次运行到第一个定时时间到达后程序就崩溃,这是为什么?#include "windows.h"#pragma comment(lib,"Winmm")int a=0;VOID CALLBACK Timer1_Timer(){MessageBox(NULL,"timer1在运作","",MB_OK);}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nCmdShow){timeSetEvent(10000,1,Timer1_Timer,1,TIME_PERIODIC);while(!a){Sleep(1);}return 1;}我建立的是win32项目
2 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
timeSetEvent(10000,1,Timer1_Timer,1,TIME_PERIODIC);
猜测第一个参数为定时时间间隔,第二个参数为时间编号,第三个参数为函数指针,第四个参数是循环次数么?第五个参数又是用来做什么?
是调用 SetTimer () 设置的定时器么?我对这个函数的内部处理不太了解。
while(!a)
{
Sleep(1);
}
我想,原因可能是这样的。当执行弹出回话框的时候,该弹出操作未完成,即执行该操作的函数栈未出完,这时Sleep()函数正好把主线程给挂起了,破坏了程序必须的某些东西,故造成程序崩溃。
- 2 回答
- 0 关注
- 194 浏览
添加回答
举报
0/150
提交
取消