一个事件中while循环,能在另一个事件中改变循环条件,跳出循环么,该如何处理

一个事件中while循环,能在另一个事件中改变循环条件,跳出循环么
void C**Dlg::OnBnClickedButtonrefresh()
{
// TODO: 在此添加控件通知处理程序代码
flag=TRUE;
while (flag)
{
//处理程序
}

}

void C**Dlg::OnBnClickedButtonFlag()
{
// TODO: 在此添加控件通知处理程序代码
flag=FALSE;
}
代码实现功能:按下refresh键时,循环执行处理程序;按下flag键时,退出处理程序。
实际仿真时发现,界面卡死。原因是什么呢?或者怎么实现我的功能需求呢?
------解决方案--------------------
在OnBnClickedButtonrefresh创建工作线程
------解决方案--------------------
1、flag不能是局部变量。
2、两个事件必须在不同线程中处理
------解决方案--------------------
3、如果两个事件必须在同一个线程中处理,那么事件1的while循环中必须加入语句如 PeekMessage(), TranslateMessage(), DispatchMessage()