ServiceBase ServiceBase ServiceBase ServiceBase Class

정의

서비스 응용 프로그램의 일부로 존재할 서비스에 기본 클래스를 제공합니다.Provides a base class for a service that will exist as part of a service application. ServiceBase는 새 서비스 클래스를 만들 때 파생되어야 합니다.ServiceBase must be derived from when creating a new service class.

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

설명

파생 ServiceBase 서비스 애플리케이션에서 서비스 클래스를 정의 하는 경우.Derive from ServiceBase when defining your service class in a service application. 유용한 서비스 재정의 된 OnStartOnStop 메서드.Any useful service overrides the OnStart and OnStop methods. 추가 기능에 대해 재정의할 수 있습니다 OnPauseOnContinue 서비스 상태에서 변경에 대 한 응답에서 특정 동작을 사용 하 여 합니다.For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

서비스는 사용자 인터페이스를 지원 하지 않는 장기 실행 로그온 한 사용자 계정으로 실행 되지 않을 수 있습니다.A service is a long-running executable that does not support a user interface, and which might not run under the logged-on user account. 서비스는 모든 사용자가 컴퓨터에 로그온 하지 않고 실행할 수 있습니다.The service can run without any user being logged on to the computer.

기본적으로 서비스 관리자 계정과 동일 하지 않는 시스템 계정으로 실행 합니다.By default, services run under the System account, which is not the same as the Administrator account. 시스템 계정의 권한을 변경할 수 없습니다.You cannot change the rights of the System account. 사용할 수 있습니다는 ServiceProcessInstaller 서비스가 실행 되는 사용자 계정을 지정 합니다.Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

실행 파일 서비스가 둘 이상 포함 될 수 있지만 별도 있어야 ServiceInstaller 각 서비스에 대 한 합니다.An executable can contain more than one service but must contain a separate ServiceInstaller for each service. ServiceInstaller 인스턴스 시스템을 사용 하 여 서비스를 등록 합니다.The ServiceInstaller instance registers the service with the system. 또한 설치 관리자는 서비스 명령을 기록 하는 데 사용할 수 있는 이벤트 로그를 사용 하 여 각 서비스를 연결 합니다.The installer also associates each service with an event log that you can use to record service commands. main() 함수 실행 파일에는 실행할 서비스를 정의 합니다.The main() function in the executable defines which services should run. 실행 파일의 위치를 가리키는 디렉터리가 아니라 시스템 디렉터리가, 서비스의 현재 작업 디렉터리를 하는 것입니다.The current working directory of the service is the system directory, not the directory in which the executable is located.

시스템 서비스를 시작 하면 실행 파일을 찾습니다 하 고 실행 합니다 OnStart 메서드 실행 파일 내에 포함 된 해당 서비스에 대 한 합니다.When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. 그러나 서비스를 실행 하는과 같지는 않습니다 실행 파일을 실행 합니다.However, running the service is not the same as running the executable. 실행 파일 서비스를 로드합니다.The executable only loads the service. (예: 시작 및 중지) 서비스가 서비스 제어 관리자를 통해 액세스 합니다.The service is accessed (for example, started and stopped) through the Service Control Manager.

호출 하면 실행 파일을 ServiceBase 파생 클래스의 생성자는 첫 번째 시간 서비스에서 시작을 호출 합니다.The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. OnStart 명령 처리 메서드는 생성자가 실행 한 후에 즉시 호출 됩니다.The OnStart command-handling method is called immediately after the constructor executes. 생성자에서 수행한 생성자에 의해 수행 되는 처리를 구분 하는 데 필요한 이므로 처음 서비스 로드 된 후에 다시 실행 되지 않습니다 OnStart합니다.The constructor is not executed again after the first time the service has been loaded, so it is necessary to separate the processing performed by the constructor from that performed by OnStart. 해제할 수 있는 모든 리소스 OnStop 작성 해야 OnStart합니다.Any resources that can be released by OnStop should be created in OnStart. 서비스를 다시 시작 하는 경우 제대로 생성 되지 않고 생성자에서 리소스를 만드는 OnStop 리소스를 릴리스 했습니다.Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

서비스 제어 관리자 (SCM)는 서비스와 상호 작용 하는 방법을 제공 합니다.The Service Control Manager (SCM) provides a way to interact with the service. 서비스를 시작, 중지, 일시 중지, 계속 하기, 또는 사용자 지정 명령을 전달할 SCM을 사용할 수 있습니다.You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. 값을 사용 하는 SCM CanStopCanPauseAndContinue 서비스 중지를 허용 하는지 여부를 결정할 일시 중지 또는 명령을 계속 합니다.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. 중지, 일시 중지 및 계속 SCM의 상황에 맞는 메뉴만 경우에 설정 된 해당 속성 CanStop 또는 CanPauseAndContinuetrue 서비스 클래스에 있습니다.Stop, Pause, and Continue are enabled in the SCM's context menus only if the corresponding property CanStop or CanPauseAndContinue is true in the service class. 명령을 사용 하도록 설정 하는 경우 서비스에 전달 됩니다 하 고 OnStop, OnPause, 또는 OnContinue 라고 합니다.If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. 하는 경우 CanStop, CanShutdown, 또는 CanPauseAndContinue 됩니다 false, 해당 명령 처리 메서드 (같은 OnStop) 메서드를 구현한 경우에 처리 되지 것입니다.If CanStop, CanShutdown, or CanPauseAndContinue is false, the corresponding command-handling method (such as OnStop) will not be processed, even if you have implemented the method.

사용할 수는 ServiceController SCM을 프로그래밍 방식으로 수행 하는 클래스 사용자 인터페이스를 사용 하 여 수행 합니다.You can use the ServiceController class to do programmatically what the SCM does using a user interface. 콘솔에서 사용할 수 있는 작업을 자동화할 수 있습니다.You can automate the tasks available in the console. 경우 CanStop, CanShutdown, 또는 CanPauseAndContinue 됩니다 true 되었지만 해당 명령 처리 메서드를 구현 하지 않았음을 (같은 OnStop) 시스템 예외를 throw 하 고 해당 명령이 무시 합니다.If CanStop, CanShutdown, or CanPauseAndContinue is true but you have not implemented a corresponding command-handling method (such as OnStop) the system throws an exception and ignores the command.

구현할 필요가 없습니다 OnStart, OnStop, 또는 다른 방법을에서 ServiceBase합니다.You do not have to implement OnStart, OnStop, or any other method in ServiceBase. 서비스의 동작을 설명 하는 반면 OnStart이므로 최소한이 멤버를 재정의 해야 합니다.However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. 합니다 main() 실행 파일의 함수를 호출 하 여 서비스를 서비스 제어 관리자 실행 파일에 등록 된 Run 메서드.The main() function of the executable registers the service in the executable with the Service Control Manager by calling the Run method. ServiceName 의 속성을 ServiceBase 에 전달 된 개체를 Run 메서드 일치 해야 합니다는 ServiceName 해당 서비스에 대 한 서비스 설치 관리자의 속성.The ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

사용할 수 있습니다 InstallUtil.exe 시스템에서 서비스를 설치 합니다.You can use InstallUtil.exe to install services on your system.

참고

서비스 호출 있지만 둘 다에 대 한 알림을 받으려면 애플리케이션 이벤트 로그 외에 다른 로그를 지정할 수 있습니다 합니다 AutoLog 또는 EventLog 속성 사용자 지정 로그에 쓸 수 있습니다.You can specify a log other than the Application event log to receive notification of service calls, but neither the AutoLog nor the EventLog property can write to a custom log. 설정할 AutoLogfalse 자동 로깅을 사용 하지 않을 경우.Set AutoLog to false if you do not want to use automatic logging.

생성자

ServiceBase() ServiceBase() ServiceBase() ServiceBase()

ServiceBase 클래스의 새 인스턴스를 만듭니다.Creates a new instance of the ServiceBase class.

필드

MaxNameLength MaxNameLength MaxNameLength MaxNameLength

서비스 이름의 최대 크기를 나타냅니다.Indicates the maximum size for a service name.

속성

AutoLog AutoLog AutoLog AutoLog

이벤트 로그에 있는 시작, 중지, 일시 중지 및 계속 명령을 보고할지 여부를 나타냅니다.Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent

서비스에서 컴퓨터 전원 상태 변경 알림을 처리할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent

터미널 서버 세션에서 받은 세션 변경 이벤트를 서비스에서 처리할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value that indicates whether the service can handle session change events received from a Terminal Server session.

CanPauseAndContinue CanPauseAndContinue CanPauseAndContinue CanPauseAndContinue

서비스를 일시 중지했다가 다시 시작할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

구성 요소가 이벤트를 발생시킬 수 있는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the component can raise an event.

(Inherited from Component)
CanShutdown CanShutdown CanShutdown CanShutdown

시스템이 종료될 때 서비스에 알릴지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop CanStop CanStop CanStop

시작한 서비스를 중지할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether the service can be stopped once it has started.

Container Container Container Container

IContainer가 포함된 Component를 가져옵니다.Gets the IContainer that contains the Component.

(Inherited from Component)
DesignMode DesignMode DesignMode DesignMode

Component가 현재 디자인 모드인지 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
EventLog EventLog EventLog EventLog

응용 프로그램 이벤트 로그에 서비스 명령 호출(예: 시작 및 중지)의 알림을 쓰는 데 사용할 수 있는 이벤트 로그를 가져옵니다.Gets an event log you can use to write notification of service command calls, such as Start and Stop, to the Application event log.

Events Events Events Events

Component에 연결된 이벤트 처리기의 목록을 가져옵니다.Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
ExitCode ExitCode ExitCode ExitCode

서비스의 종료 코드를 가져오거나 설정합니다.Gets or sets the exit code for the service.

ServiceHandle ServiceHandle ServiceHandle ServiceHandle

서비스에 대한 서비스 컨트롤 핸들을 가져옵니다.Gets the service control handle for the service.

ServiceName ServiceName ServiceName ServiceName

시스템의 서비스를 식별하는 데 사용되는 약식 이름을 가져오거나 설정합니다.Gets or sets the short name used to identify the service to the system.

Site Site Site Site

ComponentISite를 가져오거나 설정합니다.Gets or sets the ISite of the Component.

(Inherited from Component)

메서드

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Component에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the Component.

(Inherited from Component)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

ServiceBase에서 사용하는 리소스(메모리 제외)를 삭제합니다.Disposes of the resources (other than memory) used by the ServiceBase.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

이 인스턴스의 수명 정책을 제어하는 현재의 수명 서비스 개체를 검색합니다.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetService(Type) GetService(Type) GetService(Type) GetService(Type)

Component 또는 해당 Container에서 제공하는 서비스를 나타내는 개체를 반환합니다.Returns an object that represents a service provided by the Component or by its Container.

(Inherited from Component)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
OnContinue() OnContinue() OnContinue() OnContinue()

파생 클래스에서 구현되는 경우 OnContinue()는 계속 명령이 SCM(서비스 컨트롤 관리자)에 의해 서비스에 전달될 때 실행됩니다.When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). 서비스에서 일반 기능을 일시 중지했다가 다시 시작할 때 수행할 동작을 지정합니다.Specifies actions to take when a service resumes normal functioning after being paused.

OnCustomCommand(Int32) OnCustomCommand(Int32) OnCustomCommand(Int32) OnCustomCommand(Int32)

파생 클래스에서 구현되는 경우 OnCustomCommand(Int32)는 SCM(서비스 컨트롤 관리자)이 서비스에 사용자 지정 명령을 전달할 때 실행됩니다.When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. 지정된 매개 변수 값을 사용하는 명령이 발생할 때 수행할 동작을 지정합니다.Specifies actions to take when a command with the specified parameter value occurs.

OnPause() OnPause() OnPause() OnPause()

파생 클래스에서 구현되는 경우 일시 중지 명령이 SCM(서비스 컨트롤 관리자)에 의해 서비스에 전달될 때 실행됩니다.When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). 서비스가 일시 중지될 때 수행할 동작을 지정합니다.Specifies actions to take when a service pauses.

OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus)

파생 클래스에서 구현되는 경우 컴퓨터의 전원 상태가 변경될 때 실행되며,When implemented in a derived class, executes when the computer's power status has changed. 시스템 종료와는 다른 일시 중단 모드로 될 때 랩톱 컴퓨터에 적용됩니다.This applies to laptop computers when they go into suspended mode, which is not the same as a system shutdown.

OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription)

터미널 서버 세션에서 보낸 변경 이벤트를 받았을 때 실행합니다.Executes when a change event is received from a Terminal Server session.

OnShutdown() OnShutdown() OnShutdown() OnShutdown()

파생 클래스에서 구현되는 경우 시스템이 종료될 때 실행됩니다.When implemented in a derived class, executes when the system is shutting down. 시스템 종료 직전에 발생할 동작을 지정합니다.Specifies what should occur immediately prior to the system shutting down.

OnStart(String[]) OnStart(String[]) OnStart(String[]) OnStart(String[])

파생 클래스에서 구현되는 경우 시작 명령이 SCM(서비스 컨트롤 관리자)에 의해 서비스에 전달될 때 또는 운영 체제가 시작될 때(자동으로 시작되는 서비스의 경우) 실행됩니다.When implemented in a derived class, executes when a Start command is sent to the service by the Service Control Manager (SCM) or when the operating system starts (for a service that starts automatically). 서비스가 시작될 때 수행할 동작을 지정합니다.Specifies actions to take when the service starts.

OnStop() OnStop() OnStop() OnStop()

파생 클래스에서 구현되는 경우 중지 명령이 SCM(서비스 컨트롤 관리자)에 의해 서비스에 전달될 때 실행됩니다.When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). 서비스 실행이 중지될 때 수행할 동작을 지정합니다.Specifies actions to take when a service stops running.

RequestAdditionalTime(Int32) RequestAdditionalTime(Int32) RequestAdditionalTime(Int32) RequestAdditionalTime(Int32)

보류 중인 작업을 위한 추가 시간을 요청합니다.Requests additional time for a pending operation.

Run(ServiceBase) Run(ServiceBase) Run(ServiceBase) Run(ServiceBase)

SCM(서비스 컨트롤 관리자)에 서비스의 실행 파일을 등록합니다.Registers the executable for a service with the Service Control Manager (SCM).

Run(ServiceBase[]) Run(ServiceBase[]) Run(ServiceBase[]) Run(ServiceBase[])

SCM(서비스 컨트롤 관리자)에 여러 서비스의 실행 파일을 등록합니다.Registers the executable for multiple services with the Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr)

명령 처리기를 등록하고 서비스를 시작합니다.Registers the command handler and starts the service.

Stop() Stop() Stop() Stop()

실행 중인 서비스를 중지합니다.Stops the executing service.

ToString() ToString() ToString() ToString()

Component의 이름이 포함된 String을 반환합니다(있는 경우).Returns a String containing the name of the Component, if any. 이 메서드는 재정의할 수 없습니다.This method should not be overridden.

(Inherited from Component)

이벤트

Disposed Disposed Disposed Disposed

Dispose() 메서드를 호출하여 구성 요소가 삭제되는 경우 발생합니다.Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)

적용 대상

추가 정보