VC中如何终止循环 点击:517 | 回复:3



changhuaiaq

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 0回
  • 年度积分:0
  • 历史总积分:9
  • 注册:2008年6月16日
发表于:2008-06-16 16:09:52
楼主
一个按钮start启动循环,
void btnstart()
{ abc=true;
while(abc)
{
//循环体
}
}
另一按钮stop终止循环
void btnstop()
{abc=false;}
我用全局变量volatile bool abc来控制,好像不行。
但用线程间通信可以解决终止循环的问题。
void btnstart()
{
CWinThread *xunhuan=AfxBeginThread( Wxunhuan,&pParam,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);
xunhuan->ResumeThread();
}
UINT Wxunhuan(LPVOID pParam)
{abc=true;
while(abc)
{
//循环体
}
}
此时按下按钮stop可以跳出循环。请问为什么?能不能不用线程也能实现?



jqc304

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 17回
  • 年度积分:0
  • 历史总积分:24
  • 注册:2004年11月19日
发表于:2008-06-16 16:47:18
1楼
用引用,在全局变量abc前加取地址符&试试,

蜡笔小新不吃青椒

  • 精华:0帖
  • 求助:0帖
  • 帖子:31帖 | 680回
  • 年度积分:0
  • 历史总积分:1240
  • 注册:2007年10月18日
发表于:2008-06-19 14:34:47
2楼

用系统消息机制,这种无时序要求的消息发送和捕捉很方便

其实开线程时间片方式也是很好的

zsbs

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 145回
  • 年度积分:1
  • 历史总积分:234
  • 注册:2003年11月27日
发表于:2008-06-30 19:11:03
3楼
在循环体内加上消息驱动

热门招聘
相关主题

官方公众号

智造工程师