今天在子執行緒操作樹形控制元件,在呼叫GetItemData()時,發現代碼卡住不動了
主執行緒:
...
AfxBeginThread(f_fun_Thread, );
Sleep(30000);
子執行緒:
f_fun_Thread{
m_tree->GetItemData(hItem); -->卡住不動,等主執行緒Sleep(30000);結束后才往下跑
}
后來在主執行緒做訊息轉發,子執行緒就正常了
AfxBeginThread(f_fun_Thread, );
int count = 0;
while(count++ < 60){
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
Sleep(500);
}
所以GetItemData需要訊息回圈???
uj5u.com熱心網友回復:
m_tree 在主執行緒 ?Sleep(30000); 主執行緒 不 運行 !
uj5u.com熱心網友回復:
m_tree 是在主執行緒new的,已經把指標傳到子執行緒里面了,
在主執行緒sleep的期間,子執行緒無法操作m_tree嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/7436.html
標籤:界面
