我的一个对话框程序,在对话框程序中创建了一个线程,传递该对话框到该线程中
在对话框的OnDestory消息函数里面用WaitForSingleObject(handle,INFINT)
这样造成了我的界面线程的阻塞,界面没有了。而进程还在。
请问要怎么样才能在调用WaitForSingleObject(handle,INFINT)前面将handle变成有信号状态。
不知道我的问题有没有说清楚!
望得到详细的答复
谢谢
在对话框的OnDestory消息函数里面用WaitForSingleObject(handle,INFINT)
这样造成了我的界面线程的阻塞,界面没有了。而进程还在。
请问要怎么样才能在调用WaitForSingleObject(handle,INFINT)前面将handle变成有信号状态。
不知道我的问题有没有说清楚!
望得到详细的答复
谢谢
因为你用了WaitForSingleObject(handle,INFINT),是要一直等待线程退出。
可能你的线程一直都没有退出,所以在关闭对话框程序运行到OnDestory的时候一直在等待线程退出。
你可能要控制好你的线程,让线程在应该结束的时候自己结束。
因为你用了WaitForSingleObject(handle,INFINT),是要一直等待线程退出。
可能你的线程一直都没有退出,所以在关闭对话框程序运行到OnDestory的时候一直在等待线程退出。
你可能要控制好你的线程,让线程在应该结束的时候自己结束。
能够让WaitForSingleObject(handle,INFINT)函数返回
然后继续往下执行。?????好象我修改了对话框(该对话框的指针传给线程)的一个公共变量后,可以使得handle线程变成有信号的状态,
使得WaitForSingleObject(handle,INFINT)函数返回,然后可以正确的结束我的程序。请问这里面有什么知识。
我现在真的是一头雾水
谢谢
能够让WaitForSingleObject(handle,INFINT)函数返回
然后继续往下执行。????? 好象我修改了对话框(该对话框的指针传给线程)的一个公共成员实例后,可以使得handle线程变成有信号的状态,
使得WaitForSingleObject(handle,INFINT)函数返回,然后可以正确的结束我的程序。
为什么这样?????????????????????????????
??????????????????????????????????
??????????????????????????????????
在这里 handle 作为线程句柄,需要线程运行结束 则 WaitForSingleObject 才能执行完毕,所以结束进程不能靠 WaitForSingleObject.比较好的方法是 将窗口句柄 hWnd 传入线程函数,当线程结束时 PostMessage(hWnd,WM_THREAD_EXIT,0,0)这样窗口类得到 这个消息的时候就意味可以CloseHandle(handle),退出程序了,在此之前需要保护窗体不被销毁
谢谢
我会加分的
在 句柄所在类 的 WindowProc 函数里判断 pMsg-message ==WM_....这个函数是虚函数,可以通过Wizard 添加