事件驅動編程

為需要處理的事件編寫相應的事件處理程式。要理解事件驅動和程式,就需要與非事件驅動的程式進行比較。實際上,現代的程式大多是事件驅動的,比如多執行緒的程式,肯定是事件驅動的。早期則存在許多非事件驅動的程式,這樣的程式,在需要等待某個條件觸發時,會不斷地檢查這個條件,直到條件滿足,這是很浪費cpu時間的。而事件驅動的程式,則有機會釋放cpu從而進入睡眠態(注意是有機會,當然程式也可自行決定不釋放cpu),當事件觸發時被作業系統喚醒,這樣就能更加有效地使用cpu.

處理程式

為需要處理的事件編寫相應的事件處理程式。代碼在事件發生時執行。

delphi和java編程特點

n事件(event)表示程式某件事發生的信號。事件分為:

o外部事件:由外部用戶動作產生的事件。例如,點擊滑鼠、按鍵盤。

o內部事件:由系統內部產生的事件。例如,定時器事件。

n源對象(source object)是產生事件的對象。

一般步驟

1、確定回響事件的元素

2、為指定元素確定需要回響的事件類型

3、為指定元素的指定事件編寫相應的事件處理程式

4、將事件處理程式綁定到指定元素的指定事件

事件類 事件類

每個事件對象包含與該事件相關的屬性。getSource()方法可以獲取事件的源對象。

產生的事件

用戶動作 源對象 事件類
單擊按鈕 JButton ActionEvent
單擊複選框 JCheckBox ItemEvent, ActionEvent
單擊單選框 JRadioButton ItemEvent, ActionEvent
在文本框裡按回車鍵 JTextField ActionEvent
選擇一個新項目 JComboBox ItemEvent, ActionEvent
視窗打開、關閉等 Window WindowEvent
滑鼠按下、釋放等 Component MouseEvent
鍵盤按鈕、釋放等 Component KeyEvent

要理解事件驅動和程式,就需要與非事件驅動的程式進行比較。實際上,現代的程式大多是事件驅動的,比如多執行緒的程式,肯定是事件驅動的。早期則存在許多非事件驅動的程式,這樣的程式,在需要等待某個條件觸發時,會不斷地檢查這個條件,直到條件滿足,這是很浪費cpu時間的。而事件驅動的程式,則有機會釋放cpu從而進入睡眠態(注意是有機會,當然程式也可自行決定不釋放cpu),當事件觸發時被作業系統喚醒,這樣就能更加有效地使用cpu.

再說什麼是事件驅動的程式。一個典型的事件驅動的程式,就是一個死循環,並以一個執行緒的形式存在,這個死循環包括兩個部分,第一個部分是按照一定的條件接收並選擇一個要處理的事件,第二個部分就是事件的處理過程。程式的執行過程就是選擇事件和處理事件,而當沒有任何事件觸發時,程式會因查詢事件佇列失敗而進入睡眠狀態,從而釋放cpu。

事件驅動的程式,必定會直接或者間接擁有一個事件佇列,用於存儲未能及時處理的事件。

事件驅動的程式的行為,完全受外部輸入的事件控制,所以,事件驅動的系統中,存在大量這種程式,並以事件作為主要的通信方式。

事件驅動的程式,還有一個最大的好處,就是可以按照一定的順序處理佇列中的事件,而這個順序則是由事件的觸發順序決定的,這一特性往往被用於保證某些過程的原子化。

目前windows,linux,nucleus,vxworks都是事件驅動的,只有一些單片機可能是非事件驅動的。

相關詞條

相關搜尋

熱門詞條

聯絡我們