CWinThread* m_Walk=NULL;
if (!m_Walk)
{
m_Walk=AfxBeginThread(m_Manipulator->ThreadWalk,(LPVOID)m_Manipulator);
m_Walk->m_bAutoDelete = FALSE;
m_Walk->ResumeThread();
}请问如何终止这样的线程?请给出代码!
if (!m_Walk)
{
m_Walk=AfxBeginThread(m_Manipulator->ThreadWalk,(LPVOID)m_Manipulator);
m_Walk->m_bAutoDelete = FALSE;
m_Walk->ResumeThread();
}请问如何终止这样的线程?请给出代码!
解决方案 »
- VC++下mfc下读取md2文件问题
- 如何用edit control 控件显示16进制数
- 拒绝了与事务管理器建立连接的申请
- 怎么样让按扭响应按下去和弹上来的消息啊?
- 这几个c有什么大的区别?
- 新手求教各位大侠:怎样进行串口初始化?
- 问一个循环的问题
- DBF文件加密了,打开文件提示 不是一个表 怎样才能读出数据!谢谢
- 100分求《vc++编程高手》希望工作室 2000年出版,光盘所附源代码
- 我在一 静态函数中,创建一静态的HANDLE hevent = CreateEvent(), 在连接时报如下错误 unresolved external symbol "public: static voi
- MFC中 PCOMM 的使用
- 一个关于VC6.0转.NET的问题?
CloseHandle(m_Walk);
m_Walk=NULL;
dwExitCode The exit code for the thread. Use the GetExitCodeThread function to retrieve a thread's exit value.
还有别的方法吗?
SuspendThread(handle);
GetThreadContext(handle, &context);
context->Esp -= 4; // 调整堆栈,模拟压入一个参数
context->Eip = ExitThread; // 下一条指令指向ExitThread
SetThreadContext(handle, context);
ResumeThread(handle); // thread 会自己执行ExitThread(...)
SuspendThread(handle);
GetThreadContext(handle, &context);
context->Esp -= 4; // 调整堆栈,模拟压入一个参数
context->Eip = ExitThread; // 下一条指令指向ExitThread
SetThreadContext(handle, context);
ResumeThread(handle); // thread 会自己执行ExitThread(...)
1. SuspendThread(handle);
2. GetThreadContext(handle, &context);
3. context.Esp -= 4; // 模拟一个参数压栈
4. context.Eip = ExitThread;
5. SetThreadContext(handle, &context);
6. ResumeThread(handle); // thread会自动执行ExitThread(...)
1. SuspendThread(handle);
2. GetThreadContext(handle, &context);
3. context.Esp -= 4; // 模拟一个参数压栈
4. context.Eip = ExitThread;
5. SetThreadContext(handle, &context);
6. ResumeThread(handle); // thread会自动执行ExitThread(...)
DWORD Jade_ThreadByEvent::Kill()
{
DWORD dwKill = 0,dwExitTime = 200;
if(m_hThread != NULL)
{
//检查线程状态
if(JADE_SUCCEEDED(CheckState(TLS_STOP)))
{
Restart();
}
SetEvent(m_hEvent[0]);
dwKill = WaitForSingleObject(m_hWaitEvent[1],INFINITE);
do
{
if(!GetExitCodeThread(m_hThread,&dwKill)||dwExitTime==1000)
{
Abend(); //异常非法结束
return GetLastError();
}
Sleep(dwExitTime);
dwExitTime++;
}while(dwKill != m_dwReturn);
CloseHandle(m_hThread);
m_hThread = NULL;
return JADE_OK;
}
return JADE_THREAD_KILLED;
}
{
m_bContinue=FALSE;// 跳出Thread线程的循环
DWORD exitcode;
if(GetExitCodeThread(m_hThread,&exitcode))
{
if(exitcode==STILL_ACTIVE)
{
m_bContinue=FALSE; // 跳出Thread线程的循环
}
} CloseHandle(m_hThread);
m_hThread=NULL;
}这个方法能安全退出线程比TerminateThread()要好,防止了无法终止线程的异常情况。