關閉程序,卻還有線程未退出

問題描述

  • 通過點擊程序的方式運行時,關閉程序後,在任務管理器中卻還能找到該程序的線程
  • 通過VS來運行程序,關閉程序後,VS顯示調試器還在執行。
  • 這有什麼問題呢? 程序沒關掉,就會導致資源未釋放。這樣會導致再次運行程序時,程序無法正常執行(無法啓動,或無法訪問需要的資源)

解決辦法

  • 第一步: 中斷程序,頂部菜單-全部中斷
  • 第二步: 找到程序執行到哪個代碼段了。
    • 打開線程窗口,頂部菜單-窗口-線程 線程調試
      這時候,發現程序停在一個dll或pdb處。我們需要進入代碼,按F10單步執行很多次最終會進入到代碼的,不推薦。現在推薦一種簡單的方法,看線程窗口可以看出來最近執行的有代碼的線程,點擊它就可以進去了
      或者注意看診斷工具-事件,如下圖。可以看到當前執行位置,往上翻可以找到最近的執行代碼。
      診斷工具-事件
    • 進入後,給代碼打個斷點,按F5自然就會運行到這裏停下了。
  • 第三步: 單步執行,找到問題所在。個人經驗,一般是有循環還在執行,這種情況,可以通過一個bool值來參與循環條件,只要在關閉程序時,改變這個bool值就可以控制程序的退出了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章