ServiceBase.OnStart(String[]) 메서드

정의

파생 클래스에서 구현되는 경우 SCM(Service Control Manager)에서 시작 명령을 서비스로 보내거나 운영 체제가 시작될 때(자동으로 시작되는 서비스의 경우) 실행됩니다. 서비스가 시작될 때 수행할 작업을 지정합니다.

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 는 데이터를 전달하는 방법으로 인수를 사용할 수 있지만 이 사용법은 드뭅니다.

Caution

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

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

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

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

적용 대상

추가 정보