ServiceBase.OnStart(String[]) 메서드

정의

파생 클래스에서 구현되는 경우 시작 명령이 SCM(서비스 컨트롤 관리자)에 의해 서비스에 전달될 때 또는 운영 체제가 시작될 때(자동으로 시작되는 서비스의 경우) 실행됩니다. 서비스가 시작될 때 수행할 동작을 지정합니다.

protected:
 virtual void OnStart(cli::array <System::String ^> ^ args);
protected virtual void OnStart (string[] args);
abstract member OnStart : string[] -> unit
override this.OnStart : string[] -> unit
Protected Overridable Sub OnStart (args As String())

매개 변수

args
String[]

시작 명령에 의해 전달된 데이터입니다.

설명

서비스에서 시작 명령을 받을 때 발생하는 처리를 지정하는 데 사용합니다 OnStart . OnStart 는 서비스의 동작을 지정하는 메서드입니다. OnStart 는 데이터를 전달하는 방법으로 인수를 사용할 수 있지만 이 사용법은 드뭅니다.

주의

에 있어야 OnStart하는 처리를 수행 하려면 생성자를 사용 하지 마십시오. 서비스의 모든 초기화를 처리하는 데 사용합니다 OnStart . 애플리케이션의 실행 하는 경우 생성자가 호출 서비스가 실행 될 때가 아니라 실행 합니다. 실행 파일 OnStart은 . 예를 들어 계속하면 SCM이 이미 메모리에 개체를 보유하고 있기 때문에 생성자가 다시 호출되지 않습니다. 생성자가 아닌 OnStart생성자에 할당된 리소스를 해제하는 경우 OnStop 서비스를 두 번째로 호출할 때 필요한 리소스가 다시 생성되지 않습니다.

서비스의 설치 관리자를 설정하여 StartType 컴퓨터를 다시 부팅할 때 서비스가 자동으로 시작되도록 Automatic설정할 수 있습니다. 이러한 상황에서는 OnStart 시스템 시작 시 호출됩니다.

OnStart 는 파생 클래스에서 재정의될 것으로 예상됩니다. 서비스가 유용 OnStart 하고 OnStop 서비스 클래스에서 둘 다 구현되어야 합니다.

Main 메서드가 아닌 메서드의 OnStart 서비스에 대한 초기화 인수를 처리합니다. 매개 변수 배열의 args 인수는 서비스 콘솔의 서비스에 대한 속성 창에서 수동으로 설정할 수 있습니다. 콘솔에 입력된 인수는 저장되지 않습니다. 제어판에서 서비스를 시작할 때 일회성으로 서비스에 전달됩니다. 서비스가 자동으로 시작될 때 있어야 하는 인수는 서비스의 레지스트리 키(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<service name>)에 대한 ImagePath 문자열 값에 배치할 수 있습니다. 다음과 같은 string[] imagePathArgs = Environment.GetCommandLineArgs();메서드를 사용하여 레지스트리에서 인수를 GetCommandLineArgs 가져올 수 있습니다.

적용 대상

추가 정보