在Windows桌面应用程序(windows窗体)中,我在(c#)中创建了一个while循环:
bool stop = false;
while (!stop){
...
// code to update a label that displays the number of times the loop executed.
...
}
单击按钮时,“停止”成立,循环将停止。 但是,我没有机会在应用程序运行后单击该按钮,因为它没有响应。
这是一回事。 令我困惑的另一件事是为什么标签没有显示循环次数。这就像程序只是循环而无所事事。
如果您想知道,我正在尝试为游戏循环编写代码。
答案 0 :(得分:2)
Windows应用程序通过响应Windows消息来工作 所有WinForms事件实际上都来自Windows消息,如WM_PAINT或WM_MOSUEMOVE。
.Net Framework的Application
类运行一个消息循环,询问Windows下一条消息,然后根据需要处理该消息。
例如,如果用户单击某个按钮,Windows会向您的程序发送WM_CLICK消息。 .Net的消息循环将其转换为Click
事件,并运行您注册的任何事件处理程序
当您的代码正在运行时,应用程序正在忙于响应它收到的任何消息,并且它无法响应消息
因此,它似乎冻结了。
您应该用Timer
组件替换您的循环
将循环体移动到Tick
处理程序中,并将Interval
设置为20
或50
。