我的一个对话框程序,在对话框程序中创建了一个线程,传递该对话框到该线程中
在对话框的OnDestory消息函数里面用WaitForSingleObject(handle,INFINT)
这样造成了我的界面线程的阻塞,界面没有了。而进程还在。
请问要怎么样才能在调用WaitForSingleObject(handle,INFINT)前面将handle变成有信号状态。
不知道我的问题有没有说清楚!
望得到详细的答复
谢谢

解决方案 »

  1.   

    handle是什么 信号量  事件
      

  2.   

    你是要对话框是要等到线程退出了才能完全关闭吗?
    因为你用了WaitForSingleObject(handle,INFINT),是要一直等待线程退出。
    可能你的线程一直都没有退出,所以在关闭对话框程序运行到OnDestory的时候一直在等待线程退出。
    你可能要控制好你的线程,让线程在应该结束的时候自己结束。
      

  3.   

    你是要对话框是要等到线程退出了才能完全关闭吗?
    因为你用了WaitForSingleObject(handle,INFINT),是要一直等待线程退出。
    可能你的线程一直都没有退出,所以在关闭对话框程序运行到OnDestory的时候一直在等待线程退出。
    你可能要控制好你的线程,让线程在应该结束的时候自己结束。
      

  4.   

    handle是我在对话框初始化的时候创建的线程
      

  5.   

    我想知道的什么时候线程变成有信号状态
    能够让WaitForSingleObject(handle,INFINT)函数返回
    然后继续往下执行。?????好象我修改了对话框(该对话框的指针传给线程)的一个公共变量后,可以使得handle线程变成有信号的状态,
    使得WaitForSingleObject(handle,INFINT)函数返回,然后可以正确的结束我的程序。请问这里面有什么知识。
    我现在真的是一头雾水
    谢谢
      

  6.   

    我想知道的什么时候线程变成有信号状态 
    能够让WaitForSingleObject(handle,INFINT)函数返回 
    然后继续往下执行。????? 好象我修改了对话框(该对话框的指针传给线程)的一个公共成员实例后,可以使得handle线程变成有信号的状态, 
    使得WaitForSingleObject(handle,INFINT)函数返回,然后可以正确的结束我的程序。 
    为什么这样?????????????????????????????
    ??????????????????????????????????
    ??????????????????????????????????
      

  7.   

    调用SetEvent(handle)置信号量.WaitForSingleObject就会返回啊..不知对你有帮助没..
      

  8.   


    在这里 handle 作为线程句柄,需要线程运行结束 则 WaitForSingleObject 才能执行完毕,所以结束进程不能靠 WaitForSingleObject.比较好的方法是 将窗口句柄 hWnd 传入线程函数,当线程结束时 PostMessage(hWnd,WM_THREAD_EXIT,0,0)这样窗口类得到 这个消息的时候就意味可以CloseHandle(handle),退出程序了,在此之前需要保护窗体不被销毁
      

  9.   

    那怎么截获这个WM_THREAD_EXIT消息呢
    谢谢
    我会加分的
      

  10.   


    在 句柄所在类 的 WindowProc 函数里判断 pMsg-message ==WM_....这个函数是虚函数,可以通过Wizard 添加