我正在尝试创建一个线程并让它运行直到我的主要信号启动它,我认为这是用SetEvent完成的。但是线程中的代码永远不会被执行。下面是我已经删除(我认为)无关功能的裸代码。算法是否正确? 这就是我的想法:
在main中创建线程时,这意味着它将在后台运行。当设置事件(SetEvent)时,线程在WaitForSingleObject中拾取它,然后执行线程中的代码,对吗?
HANDLE hThread;
HANDLE Event;
DWORD Thread()
{
while(1)
{
wait = WaitForSingleObject(Event, INFINITE)
//This is where I want to execute something
}
}
int _tmain()
{
DWORD dw;
int i;
Event = CreateEvent(NULL,false,false,NULL);
hThread = CreateThread(NULL,0,Thread,EventA,0,NULL);
while(1)
{
if (condition is correct)
{
SetEvent(Event);
}
CloseHandle(Thread);
CloseHandle(Event);
}
return 0;
}
感谢您阅读。
答案 0 :(得分:1)
将CloseHandle线移出while循环。