ServiceBase 클래스

정의

서비스 애플리케이션의 일부로 존재할 서비스에 기본 클래스를 제공합니다.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. 모든 유용한 서비스는 OnStart 및 메서드를 재정의 OnStop 합니다.Any useful service overrides the OnStart and OnStop methods. 추가 기능을 사용 하는 경우 OnPause OnContinue 서비스 상태 변경에 대 한 응답으로 및를 특정 동작으로 재정의할 수 있습니다.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은 및 값을 사용 하 여 CanStop CanPauseAndContinue 서비스가 중지, 일시 중지 또는 계속 명령을 허용 하는지 여부를 확인 합니다.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. 중지, 일시 중지 및 계속은 해당 속성이 CanStop 또는 CanPauseAndContinue true service 클래스에 있는 경우에만 SCM의 상황에 맞는 메뉴에서 사용할 수 있습니다.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 또는 CanPauseAndContinuetrue 이지만 해당 하는 명령 처리 메서드 (예:)를 구현 하지 않은 경우 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. AutoLog false 자동 로깅을 사용 하지 않으려면로 설정 합니다.Set AutoLog to false if you do not want to use automatic logging.

생성자

ServiceBase()

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

필드

MaxNameLength

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

속성

AutoLog

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

CanHandlePowerEvent

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

CanHandleSessionChangeEvent

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

CanPauseAndContinue

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

CanRaiseEvents

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

(다음에서 상속됨 Component)
CanShutdown

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

CanStop

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

Container

IContainer을 포함하는 Component를 가져옵니다.Gets the IContainer that contains the Component.

(다음에서 상속됨 Component)
DesignMode

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

(다음에서 상속됨 Component)
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

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

(다음에서 상속됨 Component)
ExitCode

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

ServiceHandle

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

ServiceName

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

Site

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

(다음에서 상속됨 Component)

메서드

CreateObjRef(Type)

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

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

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

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

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

Equals(Object)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(다음에서 상속됨 MarshalByRefObject)
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)는 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()

파생 클래스에서 구현되는 경우 일시 중지 명령이 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)

파생 클래스에서 구현되는 경우 컴퓨터의 전원 상태가 변경될 때 실행되며,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)

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

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[])

파생 클래스에서 구현되는 경우 시작 명령이 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()

파생 클래스에서 구현되는 경우 중지 명령이 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)

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

Run(ServiceBase)

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

Run(ServiceBase[])

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

ServiceMainCallback(Int32, IntPtr)

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

Stop()

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

ToString()

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

(다음에서 상속됨 Component)

이벤트

Disposed

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

(다음에서 상속됨 Component)

적용 대상

추가 정보