Visual Basic アプリケーション モデルの概要Overview of the Visual Basic Application Model

Visual Basic は、Windows フォームアプリケーション (Visual Basic アプリケーションモデル) の動作を制御するための適切に定義されたモデルを提供します。Visual Basic provides a well-defined model for controlling the behavior of Windows Forms applications: the Visual Basic Application model. このモデルには、アプリケーションの起動とシャットダウンを処理するためのイベントと、未処理の例外をキャッチするためのイベントが含まれています。This model includes events for handling the application's startup and shutdown, as well as events for catching unhandled exceptions. また、単一インスタンスアプリケーションを開発するためのサポートも提供します。It also provides support for developing single-instance applications. アプリケーションモデルは拡張可能であるため、より多くの制御を必要とする開発者は、オーバーライド可能なメソッドをカスタマイズできます。The application model is extensible, so developers that need more control can customize its overridable methods.

アプリケーションモデルの使用Uses for the Application Model

一般的なアプリケーションでは、起動時およびシャットダウン時にタスクを実行する必要があります。A typical application needs to perform tasks when it starts up and shuts down. たとえば、起動時にアプリケーションでスプラッシュスクリーンの表示、データベース接続の確立、保存された状態の読み込みなどを行うことができます。For example, when it starts up, the application can display a splash screen, make database connections, load a saved state, and so on. アプリケーションがシャットダウンされると、データベース接続を閉じたり、現在の状態を保存したりできます。When the application shuts down, it can close database connections, save the current state, and so on. また、アプリケーションは、ハンドルされない例外の発生中など、アプリケーションが予期せずシャットダウンしたときに、特定のコードを実行できます。In addition, the application can execute specific code when the application shuts down unexpectedly, such as during an unhandled exception.

Visual Basic アプリケーションモデルを使用すると、単一インスタンスアプリケーションを簡単に作成できます。The Visual Basic Application model makes it easy to create a single-instance application. 単一インスタンスアプリケーションは、アプリケーションの1つのインスタンスだけを同時に実行できるという点で、通常のアプリケーションとは異なります。A single-instance application differs from a normal application in that only one instance of the application can be running at a time. 単一インスタンスアプリケーションの別のインスタンスを起動しようとすると、元のインスタンスに対して、別の起動が試行されたことを StartupNextInstance イベントによって通知されます。An attempt to launch another instance of a single-instance application results in the original instance being notified—by means of the StartupNextInstance event—that another launch attempt was made. 通知には、後続のインスタンスのコマンドライン引数が含まれます。The notification includes the subsequent instance's command-line arguments. その後、アプリケーションの後続のインスタンスは、初期化が発生する前に閉じられます。The subsequent instance of the application is then closed before any initialization can occur.

単一インスタンスアプリケーションが開始され、それが最初のインスタンスであるか、またはアプリケーションの後続のインスタンスであるかが確認されます。A single-instance application starts and checks whether it is the first instance or a subsequent instance of the application:

  • 最初のインスタンスの場合は、通常どおりに起動します。If it is the first instance, it starts as usual.

  • その後、最初のインスタンスの実行中にアプリケーションを起動しようとするたびに、動作が大きく異なります。Each subsequent attempt to start the application, while the first instance runs, results in very different behavior. 後続の試行では、最初のインスタンスに対してコマンドライン引数について通知した後、すぐに終了します。The subsequent attempt notifies the first instance about the command-line arguments, and then immediately exits. 最初のインスタンスは、StartupNextInstance イベントを処理して、後続のインスタンスのコマンドライン引数を判別し、実行を継続します。The first instance handles the StartupNextInstance event to determine what the subsequent instance's command-line arguments were, and continues to run.

    次の図は、後続のインスタンスが最初のインスタンスを通知する方法を示しています。This diagram shows how a subsequent instance signals the first instance:

    単一インスタンスアプリケーションイメージを示す図。

StartupNextInstance イベントを処理することによって、単一インスタンスアプリケーションの動作を制御できます。By handling the StartupNextInstance event, you can control how your single-instance application behaves. たとえば、Microsoft Outlook は通常、単一インスタンスのアプリケーションとして実行されます。Outlook の実行中に Outlook を再度起動しようとすると、元のインスタンスにフォーカスが移りますが、別のインスタンスは開かれません。For example, Microsoft Outlook typically runs as a single-instance application; when Outlook is running and you attempt to start Outlook again, focus shifts to the original instance but another instance does not open.

アプリケーションモデルのイベントEvents in the Application Model

アプリケーションモデルには、次のイベントがあります。The following events are found in the application model:

  • アプリケーションの起動Application startup. アプリケーションは、起動時に Startup イベントを発生させます。The application raises the Startup event when it starts. このイベントを処理することにより、メインフォームが読み込まれる前にアプリケーションを初期化するコードを追加できます。By handling this event, you can add code that initializes the application before the main form is loaded. また、Startup イベントは、必要に応じて、スタートアッププロセスのそのフェーズ中にアプリケーションの実行をキャンセルするためにも提供します。The Startup event also provides for canceling execution of the application during that phase of the startup process, if desired.

    アプリケーションのスタートアップコードの実行中にスプラッシュスクリーンを表示するようにアプリケーションを構成できます。You can configure the application to show a splash screen while the application startup code runs. 既定では、/nosplash または -nosplash のいずれかのコマンドライン引数を使用すると、アプリケーションモデルによってスプラッシュスクリーンが抑制されます。By default, the application model suppresses the splash screen when either the /nosplash or -nosplash command-line argument is used.

  • 単一インスタンスアプリケーションSingle-instance applications. StartupNextInstance イベントは、単一インスタンスアプリケーションの後続のインスタンスが開始されたときに発生します。The StartupNextInstance event is raised when a subsequent instance of a single-instance application starts. イベントは、後続のインスタンスのコマンドライン引数を渡します。The event passes the command-line arguments of the subsequent instance.

  • 未処理の例外Unhandled exceptions. アプリケーションでハンドルされない例外が発生すると、UnhandledException イベントが発生します。If the application encounters an unhandled exception, it raises the UnhandledException event. そのイベントのハンドラーは、例外を調べて、実行を継続するかどうかを判断できます。Your handler for that event can examine the exception and determine whether to continue execution.

    UnhandledException イベントは、状況によっては発生しません。The UnhandledException event is not raised in some circumstances. 詳細については、「UnhandledException」を参照してください。For more information, see UnhandledException.

  • ネットワーク接続の変更Network-connectivity changes. コンピューターのネットワークの可用性が変更されると、アプリケーションによって NetworkAvailabilityChanged イベントが発生します。If the computer's network availability changes, the application raises the NetworkAvailabilityChanged event.

    NetworkAvailabilityChanged イベントは、状況によっては発生しません。The NetworkAvailabilityChanged event is not raised in some circumstances. 詳細については、「NetworkAvailabilityChanged」を参照してください。For more information, see NetworkAvailabilityChanged.

  • アプリケーションをシャットダウンします。Application shut down. アプリケーションは、シャットダウンしようとしているときに通知する Shutdown イベントを提供します。The application provides the Shutdown event to signal when it is about to shut down. このイベントハンドラーでは、アプリケーションが実行する必要のある操作 (たとえば、終了と保存など) が完了していることを確認できます。In that event handler, you can make sure that the operations your application needs to perform—closing and saving, for example—are completed. メインフォームが閉じられたときにシャットダウンするようにアプリケーションを構成することも、すべてのフォームが閉じるときにのみシャットダウンするように構成することもできます。You can configure your application to shut down when the main form closes, or to shut down only when all forms close.

可用性Availability

既定では、Visual Basic アプリケーションモデルは Windows フォームプロジェクトで使用できます。By default, the Visual Basic Application model is available for Windows Forms projects. 別のスタートアップオブジェクトを使用するようにアプリケーションを構成した場合、またはカスタム Sub Mainを使用してアプリケーションコードを開始する場合は、そのオブジェクトまたはクラスが、アプリケーションモデルを使用するための WindowsFormsApplicationBase クラスの実装を提供する必要がある場合があります。If you configure the application to use a different startup object, or start the application code with a custom Sub Main, then that object or class may need to provide an implementation of the WindowsFormsApplicationBase class to use the application model. スタートアップオブジェクトの変更の詳細については、「 [アプリケーション] ページ (プロジェクトデザイナー) (Visual Basic)」を参照してください。For information about changing the startup object, see Application Page, Project Designer (Visual Basic).

関連項目See also