windows应用程序设计线程下载

void beginUpdate()
{
HANDLE hUpdateImage;
hUpdateImage = CreateThread(NULL, 0, CQuickSearchDlg::updateImage, this, 0, NULL);
//WaitForSingleObject(hUpdateImage, INFINITE);

//while ( !(this->isDownloadFinished()) )
//{
//  Sleep(30 * 1000);
//}

HANDLE hUpdateVideo;
hUpdateVideo = CreateThread(NULL, 0, CQuickSearchDlg::updateVideo, this, 0, NULL);
}

我在一个函数中创建两个下载线程,怎么等这两个线程下载完成才往下进入到主线程呢,而不是创建线程结束就进入主线程?
我用了waitForSingleObject(),他会阻塞住主线程,然后窗口就一直转圈 ,提示是否要结束窗口应用。怎么解决呢,因为我要下载完才能进入主线程。

可以弄个全局变量flag,子线程完成后修改flag,主线程循环读取这个flag,检测到修改后再继续运行,或者子线程完成后向主线程发消息,主线程收到消息再继续运行。