我在程序中这样创建了线程
while(true)
{
Sleep(1000);
honkHandle=CreateThread(0, 0, (LPTHREAD_START_ROUTINE) TransImg, 0, 0, &threadID);
}
调用之后,总是无法退出程序,应该怎么做呢?

解决方案 »

  1.   

    你现在是每隔一段时间就创建一个线程,
    况且你的WHILE里面也没有BREAK哦
    当然无法退出了
    你可以设置一个变量或者事件
    根据需要退出
      

  2.   

    这当然无法退出了,while(一个条件变量)就可以了。
    你想退出的时候改一下那个条件变量
      

  3.   

    bool m_bFlag=0;
    while(!m_bFlag)
    {
    ......
    }
    然后对m_bFlag控制是否结束这可怕的死循环起线程
      

  4.   

    同意beyound(我知道为什么总让我重新登陆)的设置变量!
    但是不能设置局部变量,应该设制一个全局变量,在主线程中你可以修改随时修改全局变量,然后在辅助线程中判定去全局变量的值来决定是否退出!
      

  5.   

    //a.cpp
    UINT MyThread(LPVOID pParam)
    {
       while(true)
       {
           if(::g_bOverThread == true)
           {
             return 1;
           }
           // handle
        }
    }//b.cpp
    //if i want to end the thread 
    ::g_bOverThread = true;请问:这样难道不行吗?
      

  6.   

    最好别用全局变量。应该让主线程new一个变量传给线程。主线程可以通过这个new出来的变量控制线程的退出。
      

  7.   

    谢谢  icelight;我的 pParam 要传递别的东西。
    我上面写的是一个示例。
      

  8.   

    在结构里包含"我的 pParam 要传递别的东西"就行了,传这个结构指针过去。
      

  9.   

    可以考虑用SuspendThread
    与ResumeThread来控制线程一时间运行一会儿:)
    while(m_bLoop)
    {
       ResumeThread(m_hThread);
       ::Sleep(1000);
       SuspendThread(m_hThread);
    }