Windows窗体应用程序是否忙于等待用户输入?

时间:2011-10-24 09:15:00

标签: .net winforms event-handling

通常,Windows窗体应用程序会在用户提供输入时继续执行 例如:单击按钮 在那之前应用程序忙等待吗?
(去检查“按钮”是否已被“点击”。我的意思是检查是否发生了任何事件)
或者当事件发生时OS会中断应用程序吗? Windows窗体应用程序的确切事件处理机制是什么?

2 个答案:

答案 0 :(得分:3)

不,他们不忙等待:他们运行一个Windows消息泵,这是一个阻塞的循环,直到Windows有消息提供给它。

这基本上是Application.Run所做的。

答案 1 :(得分:2)

我对它的分享知之甚少。但肯定会分享我的花生。

程序不会等待任何一个。它就像在睡眠模式。消耗资源只是为了将其GUI保留在屏幕上。

事件处理不是基于程序或基于操作系统。它的硬件基础。当您单击鼠标或按键盘上的某个键时,它被视为异步外部活动。硬件向操作系统暗示用户或外部设备采取的操作,并将信息传递给相应的程序。本程序可以接受密钥或拒绝密钥。如果它接受,则将密钥传递给事件处理程序并生成所需的操作。操作系统根本不参与该过程。它或多或少像一个调解器,它将本机代码转换为程序可读代码。这是程序特定于操作系统的原因之一。我的意思是如果操作系统以一种程序无法读取的格式转换本机代码?

您正在谈论基于Windows的应用程序中的事件,让我们想象一下USB的情况。目前主板上有8个或8个以上的USB插槽。用户可以在任何插槽中插入USB。操作系统是否一直在等待插入USB并在每个插槽中继续跟踪和等待?没有。一点也不。它是一个基于硬件的过程,它的硬件责任是关于它的亲密操作系统。 Windows兼容和Linux兼容的社区在这里进行了描述,他们在那里讨论哪个硬件是哪个操作系统支持的。

See this to know more