スレッドの終了を知りたい(WindowsAPI)
CreateThread()で作成したスレッドの終了を知りたい
(具体的には、スレッドが終了するまで待機したい)のですが、
うまくいかず困っています。WindowsAPIに関する本やネットで調べた
ところ、WaitForSingleObject()が適用できると考え、
以下のようなプログラムを作成したのですが、
元のスレッドがWaitForSingleObject()のところで
止まると同時に、CreateThread()で作成されたThread_1()も
止まってしまいます。アドバイスいただけますでしょうか。
----プログラム(該当部分)ここから----
DWORD Thread_1(LPVOID param) {
int i;
char buff[128];
/* iが99のときのみ終了してよい */
while(g_iFlg == 1)
{
for(i = 0; i < 100; i++)
{
Sleep(100);
wsprintf(buff, "%d", i);
SetDlgItemText((HWND)param, IDC_STATIC_1, buff);
}
}
ExitThread(0);
return 0;
}
BOOL CALLBACK Proc_2(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
g_iFlg = 1;
g_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread_1, (LPVOID)hDlg, 0, &g_dwThread);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_BUTTON_CANCEL:
case IDCANCEL:
g_iFlg = 0;
WaitForSingleObject(g_hThread, INFINITE);
CloseHandle(g_hThread);
EndDialog(hDlg, 0);
return TRUE;
}
}
return FALSE;
}
----プログラム(該当部分)ここまで----