我循环产生了许多子线程,每个线程都是无限循环的,如何停止其中的某个线程?不要全停。
解决方案 »
- 项目需要,真心求资料!!!
- 【编译错误】老问题了,好久不用VC,忘了怎么处理,请高手解决。
- 点一下按钮,然后在旁边出现一个对话框,这种设计只能用动态添加对话框吗?
- recv接收问题,急急急急
- 窗体分割
- 如何改变对话框中某个控件的字体颜色?
- 关于VC几种常见的操作,这样更改类名,和删除类名?
- 我买了WINDOWS程序设计但是对于UNICODE码还是不明白,请告知~~~~~谢谢~~~~
- 两个对话框显示重叠了
- 菜鸟求教!!
- vc做的DLL在PB中调用出问题,invalid stack pointer on return from function call
- 小弟刚入IT,请问RS232与RS485有何区别(详细一点)?帮忙,惭愧……
想要暂停某个线程就只要象下面这样HANDLE hThread=AfxBeginThread(MyProc,NULL); DWORD count=hThread->SuspendThread();//暂停线程
效果会很好,不仅可以很快Terminate而且还能Suspend
HANDL hEvent[n];
for( int i = 0; i < n; i++ )
{
hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
}假如第k个线程:
DWORD g_dwTimeout = INFINITE;
while( WaitForSingleObject(hEvent[k],g_TimeOut) == WAIT_OBJECT_0 )
{
//do what you want
}如果要暂停停第k个线程
ResetEvent( hEvent[k] );
启动进程:
SetEvent( hEvent[k] );
结束线程:
g_dwTimeout = 0;
ResetEvent( hEvent[k] );
如果 EVENT is signaled, 此线程就终止循环,自动退出。
--IF (WaitForSingleObject(hEvent[i],0)==WAIT_OBJECT_0)
-- return;此时你就可以随你停止你想要停止的线程了。。
-- SetEvent(hEvent[i]) /*假设hEvent[i]是你想要停止的线程对应的Event*/
在线程体中不要死循环,而写成 while(bFlag){}
这样你想停止时,只需要 bFlag = false;就OK了