[英]C++ call method from the main Thread
在我的一堂課中,我正在使用以下方法啟動線程:
HANDLE hThread;
unsigned threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &myThread, NULL, 0, &threadID );
從這個線程中,我想調用一個必須從主線程中調用的方法(該方法正在與UI交互),但是我真的不知道該怎么做,因為主線程不能等到“ myThread”通知它。
我看過很多
while(true){
//wait something from myThread
}
但是我等不及了!
有任何想法嗎?
由於您的主線程是UI,因此您可以向其發送消息。
#define WM_USER_EXECUTE_MY_CODE (WM_USER + 1000)
您的UI消息循環應處理以下消息:
// API code
// LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
// create message map yourself if you're using MFC
if (iMsg == WM_USER_EXECUTE_MY_CODE)
{
// execute your code must run in main thread
}
然后在您的工作線程中,向用戶界面發送一條消息
// HWND hwnd = handle to main UI window
// if you need some parameters, send them through WPARAM or LPARAM
SendMessage(hwnd, WM_USER_EXECUTE_MY_CODE, 0, 0);
您應該能夠使用WaitForMultipleObjects等待一個或多個線程。
http://msdn.microsoft.com/zh-CN/library/windows/desktop/ms687025(v=vs.85).aspx
例:
http://msdn.microsoft.com/zh-CN/library/windows/desktop/ms687055(v=vs.85).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.