我必须设计一个使用主循环来跟踪时间并执行连续检查的程序。我还有一个gui系统,可以改变系统中的东西。问题是:
如果我运行一个直到系统退出才停止的连续循环,用户是否能够与我设置的GUI进行交互,或者该循环是否必须停止运行才能产生按下按钮的效果?换句话说,每次用户与GUI交互时,我是否必须暂停循环,运行按钮命令,然后重新启动循环?如果是这样的话,有没有办法解决这个问题呢?感谢所有回答问题的人
发布于 2011-02-26 20:16:16
由于您没有说明您的平台,因此我将对我的回复进行泛化。
您可以使用两种模式:轮询或中断/事件驱动。
轮询
轮询包括频繁地检查信号量或标志,以查看是否发生了什么。这在嵌入式系统中很常见。后台循环,直到中断设置标志,然后处理事件。
中断/事件驱动。
在此模式中,函数在事件发生时执行。例如,当用户点击按钮时,可以执行功能。
在桌面平台(Mac、Linux、Windows等)上,您的情况可以通过使用多线程(执行)来解决。通常,GUI操作在一个线程上,而主处理在另一个线程上。这使程序在单击按钮时不会冻结GUI。
在我的应用程序中,GUI在用户单击按钮时设置一个事件。处理线程等待(休眠、挂起)该事件。用户单击该按钮,事件即被设置。处理线程唤醒并继续。
发布于 2011-02-26 20:09:56
看起来你正试图在Windows中进行类似于DOS的编程,但情况正好相反。您应该阅读一些关于事件驱动编程的内容。你的应用程序中不应该有任何主循环。所有的交互都应该通过事件来完成。当用户按下按钮时-一个事件被触发。您应该创建一个定时器来执行执行必要检查的方法,而不是您所描述的循环。
希望这能帮上点忙。
https://stackoverflow.com/questions/5129406
复制相似问题