AfxBeginThread需要需要CloseHandle?解決辦法

來源:互聯網
上載者:User

選自: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.