vc 關閉程序後任務管理器進程中進程仍然存在的解決方法

可以從以下幾個方面進行查找!

1. 程序開啓了進程,進程中使用了while(1),在程序退出時未能關閉該線程

方法: 在主進程類的析構函數結束該線程


2. 程序的消息隊列未銷燬引起

使用了GetMessage創建了消息隊列,但在程序退出時沒有及時處理完消息

解決方法: 將 GetMessage 的最後一個參數設置爲PM_REMOVE,即每次處理完消息隊列中的消息後即刻從消息隊列中銷燬該消息


小結:

       我編程中遇到的問題就屬於第二種情況,剛開始從檢查全局變量是否在退出時被釋放時查起,接着檢查了上述的情況1,發現進程還是在任務管理器中存在,

最後在調試程序中發現向GetMessage 所在的線程發送了一次某個消息,處理完後發現GetMessage 始終還能繼續接收該消息[按理接收一次後下次GetMessage

就不會再收到該消息了],所有懷疑是該消息在處理完後沒有被銷燬,始終存留在消息隊列中,導致GetMessage 不停從消息隊列中提取該消息。 經過確認發現,

是將該函數的最後一個參數設置爲NULL 引起,  改爲PM_REMOVE後問題解決


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章