下面的函数用来等待m_RdOK为真,在框架类接收完一祯数据后让其变真。
问题是:如果超时前关闭程序,怎么关闭程序后进程管理中还有能看到本程序?(任务管理中是没有了)
EnterCriticalSection(&m_csRdOK)等语句好象也没什么用,也不是多线程,是我后来加上去的。BOOL CSanYaoView::WaitRecieveOK()
{
DWORD myTime;
BOOL myOK;
MSG msg;
myTime=timeGetTime(); EnterCriticalSection(&m_csRdOK);
myOK=m_RdOK;
LeaveCriticalSection(&m_csRdOK);
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) //post all messages
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
while(!myOK&&timeGetTime()-myTime<15000)
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) //post all messages
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
EnterCriticalSection(&m_csRdOK);
myOK=m_RdOK;
LeaveCriticalSection(&m_csRdOK);
if(myOK)
{
return(true);
break;
}if(timeGetTime()-myTime>15000&&!myOK)
return(false);
else
return(true);
}
问题是:如果超时前关闭程序,怎么关闭程序后进程管理中还有能看到本程序?(任务管理中是没有了)
EnterCriticalSection(&m_csRdOK)等语句好象也没什么用,也不是多线程,是我后来加上去的。BOOL CSanYaoView::WaitRecieveOK()
{
DWORD myTime;
BOOL myOK;
MSG msg;
myTime=timeGetTime(); EnterCriticalSection(&m_csRdOK);
myOK=m_RdOK;
LeaveCriticalSection(&m_csRdOK);
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) //post all messages
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
while(!myOK&&timeGetTime()-myTime<15000)
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) //post all messages
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
EnterCriticalSection(&m_csRdOK);
myOK=m_RdOK;
LeaveCriticalSection(&m_csRdOK);
if(myOK)
{
return(true);
break;
}if(timeGetTime()-myTime>15000&&!myOK)
return(false);
else
return(true);
}
解决方案 »
- WSASend和WSARecv同时使用,如何判断完成通知是接收还是发送?
- 写dll时出现2019错误,求救啊
- 字体的高度点数是固定的吗?
- 关于CEdit的两个问题 @_@
- 创建线程后卫什么关闭了线程句柄,线程还是可以运行!
- 我想写这样的程序,请大虾提供学习方向?
- 通过vc6怎样把图形数据(如BMP)导入word(*.doc)文档,并能生成表格,用msword9.h
- 请教矢量绘图软件的基本实现思路
- !!!求救..............
- 有谁愿意在职接单赚外快么???!!!!有‘游戏大厅’开发经验的深圳老手快快请进!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 请问哪里有Visual C++网络通信协议分析与应用实现电子书下载?
- why??!?!?!为什么我的程序现在加入任何一个新的变量或是函数都报错!!在线等!!!!!
但是不执行上面的等待函数就正常
执行了如果是超时m_RdOK还没有变true的话就发生如上现象
真奇怪!
如果不调用这个函数就能正常结束程序
好象也不是仍然有子线程没有终止的问题……
不知怎么搞的,调用下面函数,然后关闭程序。
中进程管理中还有能看到本程序!!怪!!!
我连多线程都没有搞了!!void CSanYaoView::OnButtonYk7()
{
m_RdOK=false;
if(!WaitRecieveOK())
AfxMessageBox("等待超时!");}
{
m_RdOK=false;
我想还是前一个进程没有结束的缘故,因为这个进程回马上结束;线程同步问题是很……