我必须设计一个程序,它使用主循环来跟踪时间并执行连续检查。我还有一个可以改变系统内容的gui系统。问题是:
如果我运行的连续循环在系统退出之前不会停止,那么用户是否能够与我设置的GUI进行交互,或者循环必须停止运行以实现按下按钮的效果?换句话说,每次用户与GUI交互时,是否必须暂停循环,运行按钮命令,然后重新启动循环?如果有的话,有办法解决这个问题吗?感谢所有回答的人
答案 0 :(得分:2)
由于您未说明您的平台,因此我将一般地说明我的回复。
您可以使用两种模式:轮询或中断/事件驱动。
轮询涉及经常检查信号量或标记以查看是否发生了某些事情。这在嵌入式系统中很常见。后台循环,直到中断设置标志然后处理该事件。
在此模式中,当事件发生时执行函数。例如,当用户点击按钮时可以执行功能。
在桌面平台(Mac,Linux,Windows等)上,您的情况通过使用多个线程(执行)来解决。通常,GUI操作在一个线程上,主要处理在另一个线程上。这允许程序在单击按钮时不冻结GUI。
在我的应用程序中,GUI在用户单击按钮时设置事件。处理线程在事件上等待(休眠,挂起)。用户单击按钮,事件已设置。处理线程唤醒并继续。
答案 1 :(得分:1)
似乎你正试图在Windows中进行类似DOS的编程,而这种方式则相反。您应该阅读有关事件驱动编程的内容。 应用程序中不应该有任何主循环。所有互动都应该通过活动来完成。 当用户按下按钮时 - 会触发一个事件。 而不是你描述的循环,你应该创建一个计时器,它将执行一个将进行必要检查的方法。
希望这有点帮助。