先上代码::
#include <iostream.h>
#include <string.h>
#include <windows.h>
#include <stdio.h>class Worker
{
public:
Worker(){}
~Worker(){}
int DoWorker();
static DWORD WINAPI ThreadFunc(void *p);
};int Worker::DoWorker()
{
HANDLE hThread;
DWORD ThreadID;
hThread=CreateThread(NULL,0,ThreadFunc,NULL,0,&ThreadID);
CloseHandle(hThread);
return 1;
}DWORD WINAPI Worker::ThreadFunc(void *p)
{
MessageBox(NULL,"yes yes!","ok!",MB_OK);
Sleep(1000);
MessageBox(NULL,"no no!","not!",MB_OK);
return 0;
}int main(void)
{
Worker w;
w.DoWorker();
//w.ThreadFunc((LPVOID)1);
return 1;
}
为啥我运行DoWorker后程序没有执行ThreadFunc呢??哪位大牛知道麻烦说下。。谢谢

解决方案 »

  1.   

    这么快CloseHandle(hThread); 啊。
      

  2.   

      很有可能ThreadFunc这个线程函数还没执行就被结束了(CloseHandle(hThread); )。。
      

  3.   

    但我把CloseHandle注释掉后还是没用。。不知道什么原因。。
      

  4.   

    你怎么没给ThreadFunc(void *p)这个函数传参数。。
      

  5.   

    int main(void) 

    Worker w; 
    w.DoWorker(); 
    //w.ThreadFunc((LPVOID)1); 
    return 1; 

    =======
    后面加一个Sleep(10000);就行了,改成这样
    int main(void) 

    Worker w; 
    w.DoWorker(); 
    //w.ThreadFunc((LPVOID)1); 
    Sleep(1000);
    return 1; 

      

  6.   

    晕,CloseHandle(hThread)只是将句柄引用计数减1,关线程函数什么事啊!