我可以在形式的应用程序中查询用户交互事件



在我的Windows表单应用程序中,我有一个段循环,该循环不断轮询操纵杆设备的值,并连续使用这些值更新GUI,然后刷新GUI。但是,只要我在段循环中,UI对任何相互作用都没有反应。

是否有一种方法可以查询 GUI事件或交互作用,例如在我的wire循环中,例如单击按钮或键按?

如果某些事件或发生的交互,我希望能够退出循环。我至少希望接近和最小化按钮工作。

因为我只需要轮询操纵杆并更新GUI 20次,因此大部分循环时间只是睡眠时间。但是我想在此期间等待事件和互动。

您是否正在使用游戏控制器?如果是这样,您如何从中获得输入?

使用普通的Windows输入(鼠标和键盘),您将调用ONXXX方法(或调用相应的事件)。

显然,执行阻塞或长期运行的情况下的通常方法是在不拖延UI的情况下是在单独的线程中运行操作。但是,这实际上取决于您如何从设备获得输入。

我更简单地解决了这个问题。基本上,GUI应用程序中似乎有一个循环是一个坏主意。尝试通过wir loop 从单独的线程更新GUI 是不起作用的,或者只是不良的编程实践。

我不是使用一个段循环来无限期地调用函数,而是使用一个计时器,该计时器会触发每50ms每50ms调查操纵杆的函数。这意味着剩下的时间GUI可以自由更新自己的自我。我不需要强迫它来刷新或查询任何用户交互。因为功能仅运行非常短暂,GUI有足够的时间呼吸,并且不会错过互动或事件。

总结一下计时器驱动的函数调用可以是一个wier循环的有用替代方法,可以从GUI应用程序中的多线程噩梦中保存您。

最新更新