解决程序退出时死锁和内存或资源泄露的问题

解决程序退出时死锁和内存或资源泄露的问题:
1.在OnDestroy等Windows消息处理函数里,慎用WaitForSingleObject函数,如果等待的对象再被通知之前,另外的线程直接或间接触发了其他消息处理函数,则会引发消息排队,由于当前的消息处理函数正在WaitFor并没有返回,所以其他消息函数可能无法被系统调用,导致死锁。这样程序就无法正常退出了。
2.另外在调用会直接或间接触发消息处理函数的函数之前应该使用IsWindow(m_hWnd)对消息的处理窗口进行验证,避免调用时窗体资源已被释放被系统回收而产生的警告或崩溃;
3.尽量使用安全方式停止线程,万不得已使用TerminateThread的时候请在对象的析构函数中调用,并使用(void)WaitForSingleObject(m_hThread, INFINITE)等待,CloseHandle(m_hThread)和m_hThread=NULL不应该放在这之后,而应该放在线程三部曲第二步的静态线程体函数的最后执行。

你可能感兴趣的:(解决程序退出时死锁和内存或资源泄露的问题)