在GUI中等待子執行緒結束

2021-06-18 21:37:48 字數 755 閱讀 9046

多執行緒中,一般主線程建立執行緒(createthread)後,由工作執行緒函式完成具體內容,工作執行緒在返回時通過發訊息postmessage告訴主線程結果,主線程做相當處理。

專案需求:

總共有多條任務要執行,主線程需要需要等待第1條任務執行結果,如果成功就往下執行,失敗則重新發3次。這樣主線程就需要等待工作執行緒的結果了。我們採用事件的方式,主線程呼叫完第一條任務後等待訊號(waitforsingleobject),這樣就會出現訊息堵塞問題。其結果總是超時。

主線程原**:

dword dwret = waitforsingleobject(heventok,1000);

if(dwret==wait_timeout)

//超時處理

解決方法:

1、使用msgwaitformultipleobject

s代替,理論上可以實現,我在測試時是成功的,到具體專案中永遠沒有等到訊號。。。(也可以使用乙個全域性的bool變數,每次去判斷這個變數的狀態來檢查訊號,這樣也可以)

bool bisok = true;

while(bisok)

break;

case wait_object_0+1:

}break;

case wait_timeout:

break;

} if(bisok == false)

break;

}

主線程會等待子執行緒執行結束再結束

一 執行緒的特點 主程序會等待所有子程序執行結束後再結束。1 將子執行緒設定守護主線程 子執行緒物件 threading.thread target 任務,daemon true 子執行緒物件.setdaemon true 二 示例 要求 主線程睡一秒後退出程式 1 不設定守護主線程則報錯,因為任務...

等待執行緒結束

今天在除錯乙個多執行緒的程式時一直出問題,具體情況是這樣的 我在程式的開始執行乙個執行緒,執行緒一直執行,知道程式結束時才結束,所以我的程式在結束時要等待執行緒結束再結束自己。正在裝載資料 我後來發現了問題,修改後就ok了,我把修改後的大致 帖出 uint ispress lpvoid lppara...

C 主線程等待子執行緒執行結束

佐左佑右 原文 c 主線程等待子執行緒執行結束 由於主程式中呼叫matlab的dll檔案進行計算要用較長的時間,主介面會有很長時間的卡頓,造成的使用者感受十分不好,因此我想在呼叫時,將呼叫放入子執行緒中,然後在主線程中彈出乙個提示框,顯示資料正在載入,等子執行緒執行結束後,主線程繼續工作。使用的是中...