在MFC編程中想結束一個進程,我第一個想到的是TerminateThread。
很快代碼就加了上去,但得不到我們想要的結果,通過調試查看TerminateThread的返回值,我們發現線程沒有被終止。於是上網搜索,論壇上有人說該函數要與closehandle函數配合使用,因爲要以免資源泄漏。
很興奮,速度添加代碼。繼續跟蹤,線程還是沒有關掉......
後來看到有人建議TerminateThread要慎用,我纔想起之前看到的AfxEndThread,因爲此函數只能通過線程本身調用終止,我覺得麻煩就不用了。其實後來想想,只要設定一個bool變量就可以了。當我想結束該線程時令bool爲false,然後在線程中判斷條件,符合即調用AfxEndThread即可。
跟蹤,調試,結果不錯。開心。
還有一點建議:不要混用WINDOWS API, CRT或MFC的線程函數!具體原理我還不懂。
最後我想說的是,怕麻煩就別搞編程。