关于为什么在线程函数中使用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就可以了!
#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就可以了!
相关文章推荐
- Pycharm里面使用PIL库之后,为什么调用Image的方法不能弹出代码提示,怎样能让代码提示弹出?
- 关于this和super关键字为什么不能再static方法中或者静态代码块中
- 关于子网划分—为什么全0全1子网号不能使用
- 关于在二级目录下,Cookie不能删除或者使用的解决方法的
- 关于hbase中进入shell但是无法使用的问题,以及web界面为什么不能访问。
- 关于使用phpstudy搭建本地服务器,80端口被系统服务占用,不能关掉
- 关于在extjs中使用column布局,不能显示textfield的标签(fieldLabel)解决方法
- 关于系统弹出错误:429 , ActiveX 部件不能创建对象 的解决方法
- win7中C#的winForm编程使用savefiledialog不能弹出保存窗体的解决方法
- IIS8.5关于“ 配置错误 不能在此路径中使用此配置节”的解决办法
- 关于更改ip后dbconsole服务不能启动(em不能使用)问题的根本解决方法(ZZ)
- java中静态方法中为什么不能使用this、super和直接调用非静态方法
- 不能在printf中使用%lf。为什么printf()用%f 输出double型,而scanf() 却用%lf 呢
- 关于Ctrl+PageDown在使用查找功能后不能使用的问题
- C语言的字符指针必须分配空间或者指向某个地址否则不能使用
- 关于模版类或者函数的使用问题
- 深入分析JS原型链以及为什么不能在原型链上使用对象
- 为什么使用百度编辑器时 前台代码不能放在 class<table >中 如果放进去的话,会发生 百度编辑的内容显示不出来