Visual Basic 提供定義完善的模型來控制 Windows Forms 應用程式的行為:Visual Basic 應用程式模型。 此模型包含處理應用程式啟動和關機的事件,以及攔截未處理的例外狀況的事件。 它也支持開發單一實例應用程式。 應用程式模型是可延伸的,因此需要更多控制權的開發人員可以自定義其可覆寫的方法。
應用程式模型的用途
一般應用程式必須在啟動和關閉時執行工作。 例如,啟動時,應用程式可以顯示啟動顯示畫面、建立資料庫連線、載入已儲存的狀態等等。 當應用程式關閉時,它可以關閉資料庫連線、儲存目前狀態等等。 此外,當應用程式意外關閉時,應用程式可以執行特定程序代碼,例如在未處理的例外狀況期間。
Visual Basic 應用程式模型可讓您輕鬆地建立 單一實例 應用程式。 單一實例應用程式與一般應用程式不同,因為一次只能執行一個應用程式的實例。 嘗試再次啟動單一實例應用程式時,原始實例會透過 StartupNextInstance
事件接收到通知,提示有另一次啟動嘗試。 通知包含後續實例的命令行自變數。 接著會先關閉應用程式的後續實例,以防止進行任何初始化。
單一實例應用程式會啟動並檢查它是否為第一個實例或應用程式的後續實例:
如果是第一次,它會正常啟動。
每次後續嘗試啟動應用程式,而第一個實例執行時,都會產生非常不同的行為。 後續嘗試會通知第一個實例有關命令列參數,然後立即退出。 第一個實例會處理
StartupNextInstance
事件,以判斷後續實例的命令行參數為何,並繼續執行。下圖顯示後續實例如何發出第一個實例的訊號:
藉由處理 StartupNextInstance
事件,您可以控制單一實例應用程式的運作方式。 例如,Microsoft Outlook 通常會以單一實例應用程式的形式執行;當 Outlook 正在執行且您嘗試再次啟動 Outlook 時,焦點會轉移到原始實例,但另一個實例不會開啟。
應用程式模型中的事件
在應用程式模型中可以找到下列事件:
應用程式啟動。 應用程式會在啟動時引發 Startup 事件。 藉由處理此事件,您可以新增程序代碼,以在載入主要表單之前初始化應用程式。 若有需要,事件
Startup
也提供在啟動過程的那個階段取消應用程式執行的選項。您可以在應用程式啟動程式代碼執行時,將應用程式設定為顯示啟動顯示畫面。 根據預設,應用程式模型會在使用
/nosplash
或-nosplash
命令行自變數時隱藏啟動顯示畫面。單一實例應用程式。 StartupNextInstance當單一實例應用程式的後續實例啟動時,就會引發 事件。 事件會傳遞後續實例的命令列引數。
未處理的例外狀況。 如果應用程式遇到未處理的例外狀況,則會引發 UnhandledException 事件。 該事件的處理程式可以檢查例外狀況,並判斷是否要繼續執行。
在某些情況下不會引發
UnhandledException
事件。 如需詳細資訊,請參閱UnhandledException。網路連線變更。 如果計算機的網路可用性變更,應用程式會引發NetworkAvailabilityChanged事件。
在某些情況下不會引發
NetworkAvailabilityChanged
事件。 如需詳細資訊,請參閱NetworkAvailabilityChanged。應用程式關閉。 應用程式提供 Shutdown 事件,以在即將關閉時發出訊號。 在該事件處理程式中,您可以確定應用程式必須執行的作業已完成,例如關閉和儲存。 您可以將應用程式設定為在主要表單關閉時關閉,或只在所有表單關閉時關閉。
可用性
根據預設,Visual Basic 應用程式模型適用於 Windows Forms 專案。 如果您將應用程式設定為使用不同的啟動物件,或以自定義 Sub Main
啟動應用程式程式代碼,則該物件或類別可能需要提供 類別的實作 WindowsFormsApplicationBase ,才能使用應用程式模型。 如需變更啟動物件的詳細資訊,請參閱 應用程式頁面、項目設計工具 (Visual Basic) 。