다음을 통해 공유


Visual Basic 애플리케이션 모델 개요

Visual Basic은 Windows Forms 애플리케이션의 동작을 제어하기 위한 잘 정의된 모델인 Visual Basic 애플리케이션 모델을 제공합니다. 이 모델에는 애플리케이션의 시작 및 종료를 처리하기 위한 이벤트와 처리되지 않은 예외를 catch하기 위한 이벤트가 포함됩니다. 또한 단일 인스턴스 애플리케이션 개발을 지원합니다. 애플리케이션 모델은 확장 가능하므로 더 많은 제어가 필요한 개발자는 재정의 가능한 메서드를 사용자 지정할 수 있습니다.

애플리케이션 모델 사용

일반적인 애플리케이션은 시작 및 종료 시 작업을 수행해야 합니다. 예를 들어 애플리케이션이 시작될 때 시작 화면을 표시하고, 데이터베이스 연결을 만들고, 저장된 상태를 로드하는 등의 작업을 수행할 수 있습니다. 애플리케이션이 종료되면 데이터베이스 연결을 닫고 현재 상태를 저장하는 등의 작업을 수행할 수 있습니다. 또한 애플리케이션이 예기치 않게 종료되는 경우(예: 처리되지 않은 예외 중) 특정 코드를 실행할 수 있습니다.

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)를 참조하세요.

참고하십시오