1

私のクラスの 1 つで、次のメソッドを使用してスレッドを起動しています。

HANDLE hThread;
unsigned threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &myThread, NULL, 0, &threadID );

そして、このスレッドから、メイン スレッドから呼び出さなければならないメソッドを呼び出したいのですが (メソッドは UI と対話しています)、メイン スレッドが " myThread」で通知します。

私はたくさん見てきました

while(true){
  //wait something from myThread
}

しかし、私はこのように待つことができません !

何か案は?

4

2 に答える 2

5

メイン スレッドは 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
}

ワーカー スレッドで、UI にメッセージを送信します。

// 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);  
于 2012-07-06T17:02:05.927 に答える
0

WaitForMultipleObjects を使用して、1 つ以上のスレッドを待機できるはずです。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx

例:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms687055(v=vs.85).aspx

于 2012-07-06T16:53:26.913 に答える