通常,Windows窗体应用程序会在用户提供输入时继续执行
例如:单击按钮
在那之前应用程序忙等待吗?
(去检查“按钮”是否已被“点击”。我的意思是检查是否发生了任何事件)
或者当事件发生时OS会中断应用程序吗?
Windows窗体应用程序的确切事件处理机制是什么?
答案 0 :(得分:3)
不,他们不忙等待:他们运行一个Windows消息泵,这是一个阻塞的循环,直到Windows有消息提供给它。
这基本上是Application.Run所做的。
答案 1 :(得分:2)
我对它的分享知之甚少。但肯定会分享我的花生。
程序不会等待任何一个。它就像在睡眠模式。消耗资源只是为了将其GUI保留在屏幕上。
事件处理不是基于程序或基于操作系统。它的硬件基础。当您单击鼠标或按键盘上的某个键时,它被视为异步外部活动。硬件向操作系统暗示用户或外部设备采取的操作,并将信息传递给相应的程序。本程序可以接受密钥或拒绝密钥。如果它接受,则将密钥传递给事件处理程序并生成所需的操作。操作系统根本不参与该过程。它或多或少像一个调解器,它将本机代码转换为程序可读代码。这是程序特定于操作系统的原因之一。我的意思是如果操作系统以一种程序无法读取的格式转换本机代码?
您正在谈论基于Windows的应用程序中的事件,让我们想象一下USB的情况。目前主板上有8个或8个以上的USB插槽。用户可以在任何插槽中插入USB。操作系统是否一直在等待插入USB并在每个插槽中继续跟踪和等待?没有。一点也不。它是一个基于硬件的过程,它的硬件责任是关于它的亲密操作系统。 Windows兼容和Linux兼容的社区在这里进行了描述,他们在那里讨论哪个硬件是哪个操作系统支持的。