ServiceBase 클래스

정의

서비스 애플리케이션의 일부로 존재할 서비스에 기본 클래스를 제공합니다. ServiceBase는 새 서비스 클래스를 만들 때 파생되어야 합니다.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
상속
파생

설명

파생 ServiceBase 서비스 애플리케이션에서 서비스 클래스를 정의 하는 경우. 모든 유용한 서비스는 및 OnStop 메서드를 재정의 OnStart 합니다. 추가 기능의 경우 서비스 상태의 변경에 대한 응답으로 및 를 특정 동작으로 재정 OnPauseOnContinue 의할 수 있습니다.

서비스는 사용자 인터페이스를 지원하지 않으며 로그온한 사용자 계정에서 실행되지 않을 수 있는 장기 실행 실행 파일입니다. 사용자가 컴퓨터에 로그온하지 않고도 서비스를 실행할 수 있습니다.

기본적으로 서비스는 관리자 계정과 동일하지 않은 시스템 계정으로 실행됩니다. 시스템 계정의 권한은 변경할 수 없습니다. 또는 를 ServiceProcessInstaller 사용하여 서비스가 실행될 사용자 계정을 지정할 수 있습니다.

실행 파일은 둘 이상의 서비스를 포함할 수 있지만 각 서비스에 대해 별도의 ServiceInstaller 를 포함해야 합니다. ServiceInstaller instance 시스템에 서비스를 등록합니다. 또한 설치 관리자는 각 서비스를 서비스 명령을 기록하는 데 사용할 수 있는 이벤트 로그와 연결합니다. 실행 파일의 함수는 main() 실행할 서비스를 정의합니다. 서비스의 현재 작업 디렉터리가 실행 파일이 있는 디렉터리가 아니라 시스템 디렉터리입니다.

서비스를 시작할 때 시스템은 실행 파일을 찾아 실행 파일 내에 포함된 해당 서비스에 대한 메서드를 실행 OnStart 합니다. 그러나 서비스를 실행하는 것은 실행 파일을 실행하는 것과 다릅니다. 실행 파일은 서비스만 로드합니다. 서비스는 서비스 제어 관리자를 통해 액세스(예: 시작 및 중지)됩니다.

실행 파일은 서비스에서 Start를 ServiceBase 처음 호출할 때 파생 클래스의 생성자를 호출합니다. OnStart 명령 처리 메서드는 생성자가 실행된 직후에 호출됩니다. 서비스가 처음 로드된 후에는 생성자가 다시 실행되지 않으므로 생성자가 수행한 처리를 에서 수행한 OnStart처리와 분리해야 합니다. 에서 해제 OnStop 할 수 있는 모든 리소스는 에서 OnStart만들어야 합니다. 리소스를 해제한 후 OnStop 서비스가 다시 시작되는 경우 생성자에서 리소스를 만들면 리소스가 제대로 만들어지는 것을 방지할 수 있습니다.

SCM(서비스 제어 관리자)은 서비스와 상호 작용하는 방법을 제공합니다. SCM을 사용하여 시작, 중지, 일시 중지, 계속 또는 사용자 지정 명령을 서비스에 전달할 수 있습니다. SCM은 및 CanPauseAndContinueCanStop 값을 사용하여 서비스에서 중지, 일시 중지 또는 계속 명령을 허용하는지 여부를 결정합니다. 중지, 일시 중지 및 계속은 해당 속성 CanStop 또는 CanPauseAndContinuetrue 가 서비스 클래스에 있는 경우에만 SCM의 상황에 맞는 메뉴에서 사용하도록 설정됩니다. 사용하도록 설정하면 명령이 서비스에 전달되고 OnStop, 또는 OnPauseOnContinue 가 호출됩니다. , 또는 가 이면 CanStop메서드를 구현한 경우에도 해당 명령 처리 메서드(예: OnStop)가 처리되지 않습니다.falseCanPauseAndContinueCanShutdown

클래스를 사용하여 SCM이 ServiceController 사용자 인터페이스를 사용하여 수행하는 작업을 프로그래밍 방식으로 수행할 수 있습니다. 콘솔에서 사용할 수 있는 작업을 자동화할 수 있습니다. , 또는 이지만 해당 명령 처리 메서드(예: OnStop)를 구현하지 않은 경우 CanStop시스템은 예외를 throw하고 명령을 무시합니다.trueCanPauseAndContinueCanShutdown

에서 , OnStop또는 다른 메서드ServiceBase를 구현OnStart할 필요가 없습니다. 그러나 서비스의 동작은 에 OnStart설명되어 있으므로 최소한 이 멤버를 재정의해야 합니다. 실행 파일의 함수는 main() 메서드를 호출하여 서비스 제어 관리자에 실행 파일의 서비스를 등록합니다 Run . 메서드에 ServiceBase 전달된 Run 개체의 속성은 ServiceName 해당 서비스에 대한 서비스 설치 관리자의 속성과 일치 ServiceName 해야 합니다.

를 사용하여 InstallUtil.exe 시스템에 서비스를 설치할 수 있습니다.

참고

서비스 호출 있지만 둘 다에 대 한 알림을 받으려면 애플리케이션 이벤트 로그 외에 다른 로그를 지정할 수 있습니다 합니다 AutoLog 또는 EventLog 속성 사용자 지정 로그에 쓸 수 있습니다. 자동 로깅을 false 사용하지 않으려면 을 로 설정합니다AutoLog.

생성자

ServiceBase()

ServiceBase 클래스의 새 인스턴스를 만듭니다.

필드

MaxNameLength

서비스 이름의 최대 크기를 나타냅니다.

속성

AutoLog

이벤트 로그에 있는 시작, 중지, 일시 중지 및 계속 명령을 보고할지 여부를 나타냅니다.

CanHandlePowerEvent

서비스에서 컴퓨터 전원 상태 변경 알림을 처리할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

CanHandleSessionChangeEvent

터미널 서버 세션에서 받은 세션 변경 이벤트를 서비스에서 처리할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

CanPauseAndContinue

서비스를 일시 중지했다가 다시 시작할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

CanRaiseEvents

구성 요소가 이벤트를 발생시킬 수 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 Component)
CanShutdown

시스템이 종료될 때 서비스에 알릴지 여부를 나타내는 값을 가져오거나 설정합니다.

CanStop

시작한 서비스를 중지할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

Container

IContainer을 포함하는 Component를 가져옵니다.

(다음에서 상속됨 Component)
DesignMode

Component가 현재 디자인 모드인지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 Component)
EventLog

애플리케이션 이벤트 로그에 서비스 명령 호출(예: 시작 및 중지)의 알림을 쓰는 데 사용할 수 있는 이벤트 로그를 가져옵니다.

Events

Component에 연결된 이벤트 처리기의 목록을 가져옵니다.

(다음에서 상속됨 Component)
ExitCode

서비스의 종료 코드를 가져오거나 설정합니다.

ServiceHandle

서비스에 대한 서비스 컨트롤 핸들을 가져옵니다.

ServiceName

시스템의 서비스를 식별하는 데 사용되는 약식 이름을 가져오거나 설정합니다.

Site

ComponentISite를 가져오거나 설정합니다.

(다음에서 상속됨 Component)

메서드

CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
Dispose()

Component에서 사용하는 모든 리소스를 해제합니다.

(다음에서 상속됨 Component)
Dispose(Boolean)

ServiceBase에서 사용하는 리소스(메모리 제외)를 삭제합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 현재의 수명 서비스 개체를 검색합니다.

(다음에서 상속됨 MarshalByRefObject)
GetService(Type)

Component 또는 해당 Container에서 제공하는 서비스를 나타내는 개체를 반환합니다.

(다음에서 상속됨 Component)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
InitializeLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.

(다음에서 상속됨 MarshalByRefObject)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
OnContinue()

파생 클래스에서 구현되는 경우 OnContinue()는 계속 명령이 SCM(서비스 컨트롤 관리자)에 의해 서비스에 전달될 때 실행됩니다. 서비스에서 일반 기능을 일시 중지했다가 다시 시작할 때 수행할 동작을 지정합니다.

OnCustomCommand(Int32)

파생 클래스에서 구현되는 경우 OnCustomCommand(Int32)는 SCM(서비스 컨트롤 관리자)이 서비스에 사용자 지정 명령을 전달할 때 실행됩니다. 지정된 매개 변수 값을 사용하는 명령이 발생할 때 수행할 동작을 지정합니다.

OnPause()

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

OnPowerEvent(PowerBroadcastStatus)

파생 클래스에서 구현되는 경우 컴퓨터의 전원 상태가 변경될 때 실행되며, 시스템 종료와는 다른 일시 중단 모드로 될 때 랩톱 컴퓨터에 적용됩니다.

OnSessionChange(SessionChangeDescription)

터미널 서버 세션에서 보낸 변경 이벤트를 받았을 때 실행합니다.

OnShutdown()

파생 클래스에서 구현되는 경우 시스템이 종료될 때 실행됩니다. 시스템 종료 직전에 발생할 동작을 지정합니다.

OnStart(String[])

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

OnStop()

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

RequestAdditionalTime(Int32)

보류 중인 작업을 위한 추가 시간을 요청합니다.

RequestAdditionalTime(TimeSpan)

OnStart, OnStop, OnPause 또는 OnContinue에서 이 메서드를 호출하면 서비스가 응답하지 않는 것으로 표시되지 않도록 지정된 대기 힌트가 서비스 제어 관리자에 전달됩니다.

Run(ServiceBase)

SCM(서비스 컨트롤 관리자)에 서비스의 실행 파일을 등록합니다.

Run(ServiceBase[])

SCM(서비스 컨트롤 관리자)에 여러 서비스의 실행 파일을 등록합니다.

ServiceMainCallback(Int32, IntPtr)

명령 처리기를 등록하고 서비스를 시작합니다.

Stop()

실행 중인 서비스를 중지합니다.

ToString()

Component의 이름이 포함된 String을 반환합니다(있는 경우). 이 메서드는 재정의할 수 없습니다.

(다음에서 상속됨 Component)

이벤트

Disposed

Dispose() 메서드를 호출하여 구성 요소를 삭제할 때 발생합니다.

(다음에서 상속됨 Component)

적용 대상

추가 정보