你先在自己定义的线程的头文件里面定义一个结构
比如:struct WorkThreadInfo
{
....
HANDLE mainTread;
}//在开始工作线程时
先初始化一下结构AfxBeginThread(WorkThread,&WorkThreadInfo);

解决方案 »

  1.   

    temp_thread=::CreateThread(
    NULL,
    0,
    begin_a_thread,
    NULL,
    0,
    NULL);
    ///
    static DWORD WINAPI begin_a_thread(LPVOID lpParam)
    {
        printf("begin thread\n");
        while(1)
        {
           if(...) break
         }
         //我想在执行完while后结束本线程
        printf("exit thread");
        return 0;
    }
      

  2.   

    HANDLE handle;
    handle=::CreateThread(NULL,0,WorkThread,(LPVOID)&s,0,&dwThreadId);
    DWORD WINAPI WorkThread(LPVOID lpvThreadParm)
    {
        
       handle........}
      

  3.   

    temp_thread=::CreateThread(
    NULL,
    0,
    begin_a_thread,
    NULL,
    0,
    NULL);
    ///
    static DWORD WINAPI begin_a_thread(LPVOID lpParam)
    {
        printf("begin thread\n");
        while(1)
        {
           if(...) break
         } 
         ::TerminateThread(temp_thread,0);    
         printf("exit thread");
        return 0;
    }
      

  4.   

    static DWORD WINAPI begin_a_thread(LPVOID lpParam)
    {
        printf("begin thread\n");
        while(1)
        {
           if(...) break
         }
         //我想在执行完while后结束本线程
        printf("exit thread");
        return 0;
    }
    线程函数返回以后线程不就结束了吗?不需要另外的代码啊。
      

  5.   

    请问::TerminateThread(temp_thread,0); 改成::CloseHandle(temp_thread);是一样的吗?
      

  6.   

    为什么要CloseHandle?你的循环结束以后线程函数不就返回了吗?这个时候线程就已经结束了。