可以從以下幾個方面進行查找!
1. 程序開啓了進程,進程中使用了while(1),在程序退出時未能關閉該線程
方法: 在主進程類的析構函數結束該線程
2. 程序的消息隊列未銷燬引起
使用了GetMessage創建了消息隊列,但在程序退出時沒有及時處理完消息
解決方法: 將 GetMessage 的最後一個參數設置爲PM_REMOVE,即每次處理完消息隊列中的消息後即刻從消息隊列中銷燬該消息
小結:
我編程中遇到的問題就屬於第二種情況,剛開始從檢查全局變量是否在退出時被釋放時查起,接着檢查了上述的情況1,發現進程還是在任務管理器中存在,
最後在調試程序中發現向GetMessage 所在的線程發送了一次某個消息,處理完後發現GetMessage 始終還能繼續接收該消息[按理接收一次後下次GetMessage
就不會再收到該消息了],所有懷疑是該消息在處理完後沒有被銷燬,始終存留在消息隊列中,導致GetMessage 不停從消息隊列中提取該消息。 經過確認發現,
是將該函數的最後一個參數設置爲NULL 引起, 改爲PM_REMOVE後問題解決