2
Winforms中的UI線程負責運行消息泵,請致電Application.Run
。通過消息泵,我的意思是一個無限循環,不斷從隊列中拉出消息。UI線程都運行消息泵並執行代碼?
所以,現在是我的問題,當前線程還可以執行一段代碼時,UI線程如何執行。點擊處理程序被觸發?它應該忙於使用消息泵,並且無法執行代碼?
Winforms中的UI線程負責運行消息泵,請致電Application.Run
。通過消息泵,我的意思是一個無限循環,不斷從隊列中拉出消息。UI線程都運行消息泵並執行代碼?
所以,現在是我的問題,當前線程還可以執行一段代碼時,UI線程如何執行。點擊處理程序被觸發?它應該忙於使用消息泵,並且無法執行代碼?
處理消息泵處理消息需要一定的時間,因爲這是通過消息泵(通過單擊事件)同步調用的。
這就是昂貴的代碼會導致UI掛起的原因。
所以當單擊按鈕時,事件處理程序中的代碼將作爲消息發送到隊列? – ebb 2012-04-01 09:31:20
點擊的窗口消息由MP處理,內部向WinForms代碼調用click事件,並且此事件的任何訂閱者將同步運行 - 點擊處理程序就是這樣一個訂閱者。 – 2012-04-01 09:33:36
啊有道理! - 但是當然,由MP處理的消息必須包含關於應該調用什麼點擊事件的某種信息,因爲可能還有另一個按鈕的點擊事件? – ebb 2012-04-01 09:40:17