MFC中怎么用按钮控制强制跳出一个循环?跪求高手指点
假设有一个函数:
xxxxx()
{
while(1)
{ ......//循环内我的代码
}
}
我必须要用一个按钮来控制它强行退出循环
OnButton()
{
....//这里怎么写?
}
请问各位高手代码要怎么写啊?
听有些人说还要用到多线程?那多线程的代码要怎么写啊??
[解决办法]
BOOL g_bQuit = FALSE;
xxxxx()
{
while(!g_bQuit)
{ ......//循环内我的代码
}
}
我必须要用一个按钮来控制它强行退出循环
OnButton()
{
....//这里怎么写?
g_bQuit = TRUE;
//等着
}
[解决办法]
首先如果你只有一个线程的话是不可能实现(当然我是这样理解,如果有高手有方法的话`````拜之).因为在一个线程里,你知道进了这个while循环,你的这个程序就会把所有的本程序的cpu时间调给while循环使用,而其他的只有等他执行完了才能又获得cpu时间.
你要的话
Thread1里执行while
Thread2里响应button事件,当你点击后,再吧状态传给Thread1,改变循环条件
[解决办法]
不用创建线程,可在循环中加入
MSG message;
while(1){
if(::PeekMessage(&message, NULL, 0, 0, PM_REMOVE)) {
::TranslateMessage(&message);
::DispatchMessage(&message);
}
}
这样就可以响应按钮消息了
[解决办法]
不用线程,但是如果那个while循环得到了cpu的控制权,那么程度就会一直的在循环中运行,而跳不出来,根本就不会响应其他的执行。
最好是while用一个变量来控制他的结束,这个变量由按下按钮来改变值,如
isStop = false;
while (!isStop) {...}
当按下按钮后,修改isStop = true;因为while循环每进行下一次的运行都是检查isStop的值,如果为true那么就退出了,以前也这样做过,看了不少人也推荐这样做。