问个老问题 线程正在运行的时候 如果对话框关闭了 则把线程也关掉 这里怎么关闭线程呢?
网上说用EVENT 和WaitForSingleObject 具体怎么用啊 谁给我个思路 说下步骤就行
网上说用EVENT 和WaitForSingleObject 具体怎么用啊 谁给我个思路 说下步骤就行
解决方案 »
- CStatic右键弹出菜单莫名其妙多另一个灰色的框
- tab控件 程序不动
- 如何在两个类中传递消息?
- 进程外com组件的调用问题
- 菜问题:在一个头文件中声明一个全局类,报错重复包含?
- Ado的find太慢,如何解决?
- 怎么在Single Document的View中,显示一个象Dialog的平面,在上面添加如Button一样的控件?
- 文件操作的问题..紧急求救!!!!!!!!!!!!!!!!
- 谁能用文字描述,给出创建线程,打开串口,读485串口,写485串口这些操作的流程?
- 谁能给我个最简单的WINSOCK 编写的通讯代码 见到代码就给分!
- 关于调用插件里的方法的问题
- 在VC++中怎样联系directx9
{
for(int i=0;i<pDlg->m_Damlist.GetItemCount();i++)
{
WaitForSingleObject(m_erun7.m_hObject,INFINITE);
…………
}void CTimming::OnCancel()
{
m_erun7.ResetEvent();
CDialog::OnCancel();
}但是这样关闭时程序还是出错了 请问我该怎么改
HANDLE eventExit = ::CreateEvent(NULL, FALSE, FALSE, NULL); // 告知主线程我已退出UINT ThreadFunc7(LPVOID lpParam)
{
for(int i=0;i <pDlg->m_Damlist.GetItemCount();i++)
{
//“瞥”一眼,看一下eventEnd是否为有信号状态马上返回
if(WAIT_OBJECT_0 == WaitForSingleObject(eventEnd,0))
{
::SetEvent(eventExit);
return 1;
}
…………
}
return 0;
} void OnCancel()
{
::SetEvent(eventEnd);
//这里有两种方案,一种是执著地等待线程返回
::WaitForSingleObject(eventExit,INFINITE)); /*
//另一种是等一会儿,如果未返回就强行终止线程
if(WAIT_TIMEOUT == WaitForSingleObject(eventExit,1000))
{
::TerminateThread(m_pThread->m_hThread);
}
*/
CDialog::OnCancel();
}
{
while(!bExit){ ... }} void CTimming::OnCancel()
{
bExit = TRUE;
::WaitForSingleObject(hThreadHandle,INFINITE));
...
}
::TerminateThread(m_pThread->m_hThread);