一般是给线程发送消息PostThreadMessage,或者是SetEvent()(线程函数中有有Wait这个EVENT)

解决方案 »

  1.   

    一般标准用法用是使用WaitForMultiObjects()或WaitForSingleObject()等待一个信号量,想退出时调用SetEvent()设置信号量。
      

  2.   

    所谓优雅就是让线程函数自己结束返回,而不是强制性关掉它,有如下方法:1.如果线程里面有while循环,设置全局变量作为其循环条件,如
    while(g_bQuit){}
    return 0;2.可以在线程里面建立一个线程消息队列,GetMessage如果返回0就退出线程,不是0就执行相应任务:
    MSG msg;
    while(GetMessage(&msg, NULL, NULL, NULL)
    {
    }
    return 0;
    要退出线程,PostThreadMessage(WM_QUIT,...)3.个人觉得WaitForSingleObject是用来确保一个线程是否退出,如果线程已退出,wait线程句柄就会立刻返回,
    否则一直阻塞,用它来退出一个线程,我觉得不妥