2011-10-24 32 views
7

通常,當用戶給出輸入時,窗體窗體應用程序會繼續執行。例如:
例如:點擊一個按鈕。
在此之前應用程序是否忙碌等待?
(去檢查「按鈕」是否被「點擊」。我的意思是檢查是否有任何事件發生)
或者當事件發生時操作系統是否中斷應用程序?
什麼是Windows窗體應用程序的確切事件處理機制?Windows Forms應用程序是否忙於等待用戶輸入?

+0

良好的鏈接(谷歌不給)將是偉大的:) – Dinushan

+2

你可以假設沒有正確書面的應用程序使用繁忙的等待。 – ThiefMaster

回答

2

我對分享知之甚少。但一定會分享我的花生。

程序不會等待任何一個。它就像睡眠模式一樣。消耗資源,但只是保持其屏幕上的圖形用戶界面。

事件處理不是基於程序或基於操作系統的。其基於硬件。當您單擊鼠標或按下鍵盤上的某個鍵時,其被認爲是異步外部活動。硬件向操作系統提供有關用戶或外部設備採取的操作的信息,並將信息傳遞給相應的程序。本程序可以接受密鑰或拒絕密鑰。如果它接受,則將該鍵傳遞給事件處理程序,並生成所需的操作。操作系統並沒有參與這個過程。它或多或少像一個將本機代碼轉換爲程序可讀代碼的中介器。這就是程序特定於操作系統的原因之一。我的意思是如果操作系統將程序無法讀取的格式轉換爲本地代碼?

您正在討論基於Windows的應用程序中的事件,可以設想一下USB的情況。目前主板上有8個或8個以上的USB插槽。用戶可以將USB插入任何插槽。操作系統是否繼續等待一個USB插入,並在每個插槽中保持跟蹤和等待?沒有。一點也不。它是一個基於硬件的過程,也是硬件爲操作系統提供硬件的責任。 Windows Compatible和Linux Compatible社區在這裏描述了他們在哪裏討論哪種硬件是哪個操作系統支持的地方。

See this to know more

3

不,他們不會忙着等待:他們運行一個Windows消息泵,這個消息循環會阻塞,直到Windows有消息提供給它。

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