MFC 主介面函式中線程等待避免介面卡死的處理方法

2021-08-01 22:06:48 字數 774 閱讀 5111

實用場景:

例如在mfc主介面某個button click事件中起乙個執行緒去做處理一些事情,在起的執行緒執行完畢後,接著跑click起執行緒後的**,已達到按順序執行,保證時許正確的目的。

問題:通常處理乙個執行緒等待用 waitforsingleobject,這個放在主介面執行緒成中會造成主介面「卡死」,其原因是它將主介面的訊息迴圈給阻塞了,即等不到執行緒結束的時候介面上的訊息迴圈無法正常工作,從而造成介面「卡死」

處理辦法:

在等待執行緒的同時,讓訊息迴圈一直工作

示例[cpp]view plain

copy

uint

cmainuithreadwaitdlg::startthread(

lpvoid

pparam)  

void

cmainuithreadwaitdlg::threadwork()  

void

cmainuithreadwaitdlg::doevent()  

}  cwinthread* pthread = null;  

void

cmainuithreadwaitdlg::onbnclickedbtnwork()  

} while

((dwret != wait_object_0) && (dwret != wait_failed));  

m_btnwork.enablewindow(true);       //按鈕點亮

}  

MFC 等待函式 WaitKey

我從opencv的等待函式中改進!1.可以實現 等待 功能。2.可以定時。3.可以處理訊息。防止介面卡死。void waitkey int delay 單位毫秒 計算當前的毫秒數 int time0 gettickcount 無限迴圈 for 派發訊息 translatemessage messag...

linux中線程相關函式

linux中線程相關函式 2010年03月09日 星期二 22 18 1.比較兩個執行緒 id 是否一致。執行緒id 使用 pthread t 資料型別來表示。linux 使用 unsigned long int 表示pthread t 資料型別。solaris 9 把 pthread t 資料型別...

執行緒函式(建立 取消 等待)

1.建立執行緒 建立執行緒的函式定義如下 include int pthread create pthread t restrict thread const pthread attr t restrict attr,void start routine void void restrict arg...