Visual Basic 응용 프로그램 모델 개요
업데이트: 2007년 11월
Visual Basic에서는 Windows Forms 응용 프로그램의 동작을 제어하기 위한 잘 정의된 모델인 Visual Basic 응용 프로그램 모델을 제공합니다. 이 모델에는 처리되지 않은 예외를 catch하기 위한 이벤트와 응용 프로그램의 시작 및 종료를 처리하기 위한 이벤트가 포함됩니다. 또한 단일 인스턴스 응용 프로그램 개발을 위한 지원도 제공합니다. 응용 프로그램 모델은 확장이 가능하므로 더 많은 제어가 필요한 개발자는 재정의 가능한 메서드를 사용자 지정할 수 있습니다.
응용 프로그램 모델의 용도
일반적인 응용 프로그램은 시작하고 종료할 때 작업을 수행해야 합니다. 예를 들어, 응응 프로그램은 시작할 때 시작 화면을 표시하고 데이터베이스 연결을 만들고 저장된 상태를 로드하는 등의 작업을 수행할 수 있습니다. 종료할 때는 데이터베이스 연결을 닫고 현재 상태를 저장하는 등의 작업을 수행할 수 있습니다. 또한 응용 프로그램은 처리되지 않은 예외가 발생한 경우처럼 예기치 않게 종료될 때 특정 코드를 실행할 수 있습니다.
Visual Basic 응용 프로그램 모델을 사용하면 단일 인스턴스 응용 프로그램을 쉽게 만들 수 있습니다. 단일 인스턴스 응용 프로그램은 응용 프로그램 인스턴스를 한 번에 하나씩만 실행할 수 있다는 점에서 일반 응용 프로그램과 다릅니다. 단일 인스턴스 응용 프로그램에서 다른 인스턴스를 추가로 시작하려고 하면 원래 실행 중이던 인스턴스는 StartupNextInstance 이벤트를 통해 다른 시작이 시도되었다는 알림을 받게 됩니다. 이 알림에는 후속 인스턴스의 명령줄 인수가 포함됩니다. 그러면 응용 프로그램의 후속 인스턴스는 초기화가 실행되기 전에 닫힙니다.
단일 인스턴스 응용 프로그램은 시작될 때 자신이 응용 프로그램의 첫 번째 인스턴스인지 후속 인스턴스인지 확인합니다.
첫 번째 인스턴스이면 정상적으로 시작됩니다.
첫 번째 인스턴스가 실행되고 있는 동안 응용 프로그램을 시작하려는 시도가 이루어지면 그때마다 결과 동작은 매우 달라집니다. 후속 시도는 첫 번째 인스턴스에 명령줄 인수에 대해 알린 다음 즉시 종료됩니다. 첫 번째 인스턴스는 StartupNextInstance 이벤트를 처리하여 후속 인스턴스의 명령줄 인수가 무엇인지 확인한 다음 계속 실행됩니다.
이 다이어그램은 후속 인스턴스에서 첫 번째 인스턴스에 신호하는 방법을 보여 줍니다.
StartupNextInstance 이벤트를 처리하여 단일 인스턴스 응용 프로그램이 동작하는 방식을 제어할 수 있습니다. 예를 들어, Microsoft Outlook은 일반적으로 단일 인스턴스 응용 프로그램으로 실행됩니다. Outlook이 실행되고 있을 때 Outlook을 다시 시작하려고 하면 포커스가 원래 인스턴스로 변경되고 다른 인스턴스는 열리지 않습니다.
응용 프로그램 모델의 이벤트
응용 프로그램 모델에는 다음과 같은 이벤트가 있습니다.
응용 프로그램 시작. 응용 프로그램은 시작될 때 Startup 이벤트를 발생시킵니다. 이 이벤트를 처리함으로써 기본 폼이 로드되기 전에 응용 프로그램을 초기화하는 코드를 추가할 수 있습니다. 또한 원하는 경우 Startup 이벤트를 통해 시작 프로세스 도중 응용 프로그램의 실행을 취소할 수도 있습니다.
응용 프로그램 시작 코드가 실행되고 있는 동안 시작 화면이 표시되도록 응용 프로그램을 구성할 수 있습니다. 기본적으로 응용 프로그램 모델에서는 /nosplash 또는 -nosplash 명령줄 인수가 사용된 경우 시작 화면을 표시하지 않습니다.
단일 인스턴스 응용 프로그램. 단일 인스턴스 응용 프로그램의 후속 인스턴스가 시작되면 StartupNextInstance 이벤트가 발생합니다. 이벤트는 후속 인스턴스의 명령줄 인수를 전달합니다.
처리되지 않은 예외. 응용 프로그램에서 처리되지 않은 예외가 발생하면 UnhandledException 이벤트가 발생합니다. 이 이벤트에 대한 처리기에서 예외를 검사하여 실행을 계속할 것인지 여부를 결정할 수 있습니다.
일부 상황에서는 UnhandledException 이벤트가 발생하지 않습니다. 자세한 내용은 My.Application.UnhandledException 이벤트를 참조하십시오.
네트워크 연결 변경. 컴퓨터의 네트워크 사용 가능성이 변경되면 응용 프로그램에서 NetworkAvailabilityChanged 이벤트를 발생시킵니다.
일부 상황에서는 NetworkAvailabilityChanged 이벤트가 발생하지 않습니다. 자세한 내용은 My.Application.NetworkAvailabilityChanged 이벤트를 참조하십시오.
응용 프로그램 종료. 응용 프로그램에서는 종료 신호를 보내기 위한 Shutdown 이벤트를 제공합니다. 이 이벤트 처리기에서는 응용 프로그램이 수행해야 할 닫기 및 저장 등의 작업이 완료되었는지 확인할 수 있습니다. 기본 폼이 닫힐 때 응용 프로그램이 종료되거나 모든 폼이 닫혔을 경우에만 응용 프로그램이 종료되도록 구성할 수 있습니다.
가용성
기본적으로 Visual Basic 응용 프로그램 모델은 Windows Forms 프로젝트에 사용할 수 있습니다. 다른 시작 개체를 사용하도록 응용 프로그램을 구성하거나 사용자 지정 Sub Main으로 응용 프로그램 코드를 시작하는 경우 응용 프로그램 모델을 사용하려면 해당 개체나 클래스가 WindowsFormsApplicationBase 클래스의 구현을 제공해야 할 수도 있습니다. 시작 개체 변경에 대한 자세한 내용은 방법: 응용 프로그램의 시작 개체 변경(Visual Basic)을 참조하십시오.
참고 항목
개념
참조
My.Application.StartupNextInstance 이벤트
My.Application.UnhandledException 이벤트