您的位置:首页 > 其它

关于为什么在线程函数中使用afxMessageBox或者messageBox都不能弹出?

2010-05-20 09:42 423 查看
#include<afxwin.h>
#include<Windows.h>
#include<iostream.h>
HANDLE hSemaphore;
HANDLE mb;
UINT ThreadProc15(LPVOID pParam)
{
WaitForSingleObject(hSemaphore, INFINITE);
//::MessageBox(NULL,"Ïß³Ì1ÕýÔÚÖ´ÐÐ!",NULL,MB_OK);
AfxMessageBox("线程1运行!");
//Sleep(1000);
ReleaseSemaphore(hSemaphore, 1, NULL);
return 0;
}
UINT ThreadProc16(LPVOID pParam)
{
WaitForSingleObject(hSemaphore, INFINITE);
//::MessageBox(NULL,"Ïß³Ì2ÕýÔÚÖ´ÐÐ!",NULL,MB_OK);
AfxMessageBox("线程2运行!!");
//Sleep(3000);
ReleaseSemaphore(hSemaphore, 1, NULL);
return 0;
}
UINT ThreadProc17(LPVOID pParam)
{
WaitForSingleObject(hSemaphore, INFINITE);
//::MessageBox(NULL,"Ïß³Ì3ÕýÔÚÖ´ÐÐ!",NULL,MB_OK);
AfxMessageBox("线程3运行!!");
//Sleep(1000);
ReleaseSemaphore(hSemaphore, 1, NULL);
return 0;
}

void main()
{
hSemaphore = CreateSemaphore(NULL, 3, 3, NULL);
AfxBeginThread(ThreadProc15, NULL);
AfxBeginThread(ThreadProc16, NULL);
AfxBeginThread(ThreadProc17, NULL);
Sleep(5000);
}

一直被这个问题困扰,一直以为是messageBox的问题,最后才发现原来是主线程执行的太快了,然后对话框都来不急显示就退出了!所以在主线程中加入sleep就可以了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐