Обзор модели приложения в 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, чтобы сигнализировать о завершении работы. В этом обработчике событий можно убедиться, что операции, которые должны выполняться приложением (например, закрытие и сохранение), завершены. Можно настроить приложение для завершения работы при закрытии основной формы или только при закрытии всех форм.

Availability

По умолчанию модель приложения Visual Basic доступна для проектов Windows Forms. Если настроить приложение для использования другого автоматически запускаемого объекта или запустить код приложения с помощью настраиваемого Sub Main, то для использования модели приложения этому объекту или классу может потребоваться предоставить реализацию класса WindowsFormsApplicationBase. Сведения об изменении автоматически запускаемого объекта см. в разделе Страница "Приложение" в конструкторе проектов (Visual Basic).

См. также