1. 程式人生 > >vc 關閉程式後任務管理器程序中程序仍然存在的解決方法

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

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

1. 程式開啟了程序,程序中使用了while(1),在程式退出時未能關閉該執行緒

方法: 在主程序類的解構函式結束該執行緒

2. 程式的訊息佇列未銷燬引起

使用了GetMessage建立了訊息佇列,但在程式退出時沒有及時處理完訊息

解決方法: 將 GetMessage 的最後一個引數設定為PM_REMOVE,即每次處理完訊息佇列中的訊息後即刻從訊息佇列中銷燬該訊息

小結:

       我程式設計中遇到的問題就屬於第二種情況,剛開始從檢查全域性變數是否在退出時被釋放時查起,接著檢查了上述的情況1,發現程序還是在工作管理員中存在,

最後在除錯程式中發現向GetMessage 所在的執行緒傳送了一次某個訊息,處理完後發現GetMessage 始終還能繼續接收該訊息[按理接收一次後下次GetMessage

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

是將該函式的最後一個引數設定為NULL 引起,  改為PM_REMOVE後問題解決