Visual Basic 應用程式模型概觀

Visual Basic 提供了定義完善的模型,可用來控制 Windows Forms 應用程式的行為:Visual Basic 應用程式模型。 此模型包含處理應用程式啟動和關機的事件,以及攔截未處理的例外狀況的事件。 它也提供了開發單一執行個體應用程式的支援。 應用程式模型是可延伸的,因此需要更多控制權的開發人員可以自訂其可覆寫的方法。

應用程式模型的用途

一般應用程式必須在啟動和關閉時執行工作。 例如,啟動時,應用程式可以顯示啟動顯示畫面、建立資料庫連線、載入已儲存的狀態等等。 當應用程式關閉時,它可以關閉資料庫連線、儲存目前的狀態等等。 此外,應用程式可以在應用程式意外關閉時執行特定程式碼,例如在未處理的例外狀況期間。

Visual Basic 應用程式模型可讓您輕鬆地建立單一執行個體應用程式。 單一執行個體應用程式與一般應用程式不同,因為一次只能執行一個應用程式的執行個體。 嘗試啟動單一執行個體應用程式的另一個執行個體,會導致原始執行個體收到已進行另一次啟動嘗試的通知,方法是 StartupNextInstance 事件。 通知包含後續執行個體的命令列引數。 接著會關閉應用程式的後續執行個體,再進行任何初始化。

單一執行個體應用程式會啟動,並檢查它是否為第一個執行個體或應用程式的後續執行個體:

  • 如果是第一個執行個體,則會如往常一般啟動。

  • 每次後續嘗試啟動應用程式,而第一個執行個體執行時,會產生非常不同的行為。 後續嘗試會通知第一個執行個體有關命令列引數的資訊,然後立即結束。 第一個執行個體會處理 StartupNextInstance 事件,以判斷後續執行個體的命令列引數為何,並繼續執行。

    下圖顯示後續執行個體如何發出訊號給第一個執行個體:

    Diagram that shows a single instance application image.

藉由處理 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)

另請參閱