選自:http://www.myexception.cn/vc-mfc/300534.html
1、AfxBeginThread需要需要CloseHandle???
一般的建立線程,是會CloseHandle的
但是AfxBeginThread 需要嗎???
問題2:
當線程暫停後,如果此時關閉 主介面。。。。
如何關閉子線程呢????
問題3:對於AfxBeginthread的線程, 主線程可不可以 用ExitInstance的方式來退出子線程???
------解決方案--------------------------------------------------------
1、不需要。這個是MFC封裝了的。
2、當一個線程被掛起後,使用者關閉程式,正確的做法當然是先退出掛起的線程,
方法先恢複線程,然後跟線程通訊(可能是全域變數、事件,或者訊息,前兩個
一般用於跟背景工作執行緒通訊,後者用於跟UI線程或者帶有自寫訊息迴圈的線程通訊},
讓線程自己退出,主線程等待線程控制代碼(比如等1秒鐘),如果等不到,可調用
TerminateThread 強行終止線程,當然,強行終止是可能造成內在泄漏的,
所以我一般寧可多等一會兒,比如兩秒。
3、兔子黨組織部長 給的代碼,我覺得
pThread-> m_bAutoDelete = FALSE; //是為了能夠等到UI線程控制代碼,不然線程返回後控制代碼就無效了。好像對於背景工作執行緒沒必要。
pThread-> PostThreadMessage(...); //這裡一般是傳個WM_QUIT訊息
WaitForSingleObject(pThread-> m_hThread); //這就是等線程控制代碼,應該再加個時間,比如:
WaitForSingleObject(pThread-> m_hThread, 2000);
CloseHandle(pThread-> m_hThread); //這一句是否有必要?
delete pThread; //這是為了讓線程類析構
pThread = NULL; //如果馬上要退出程式了,這一句也可以不要。
其他參考:http://bbs.csdn.net/topics/70107258