ServiceBase Klasa

Definicja

Udostępnia klasę bazową dla usługi, która będzie istnieć jako część aplikacji usługi.Provides a base class for a service that will exist as part of a service application. ServiceBasemusi być pochodny podczas tworzenia nowej klasy usługi.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
Dziedziczenie
Pochodne

Uwagi

Pochodny ServiceBase podczas definiowania klasy usługi w aplikacji usługi.Derive from ServiceBase when defining your service class in a service application. Dowolna przydatna usługa zastępuje OnStart OnStop metody i.Any useful service overrides the OnStart and OnStop methods. Aby uzyskać dodatkowe funkcje, można przesłonić OnPause i OnContinue z określonym zachowaniem w odpowiedzi na zmiany stanu usługi.For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

Usługa to długotrwały plik wykonywalny, który nie obsługuje interfejsu użytkownika i może nie działać na koncie zalogowanego użytkownika.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. Usługa może działać bez żadnego użytkownika zalogowanego na komputerze.The service can run without any user being logged on to the computer.

Domyślnie usługi są uruchamiane na koncie systemowym, które nie jest takie samo jak konto administratora.By default, services run under the System account, which is not the same as the Administrator account. Nie można zmienić uprawnień konta systemowego.You cannot change the rights of the System account. Alternatywnie możesz użyć, ServiceProcessInstaller Aby określić konto użytkownika, pod którym zostanie uruchomiona usługa.Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

Plik wykonywalny może zawierać więcej niż jedną usługę, ale musi zawierać oddzielne ServiceInstaller dla każdej usługi.An executable can contain more than one service but must contain a separate ServiceInstaller for each service. ServiceInstallerWystąpienie rejestruje usługę w systemie.The ServiceInstaller instance registers the service with the system. Instalator kojarzy również każdą usługę z dziennikiem zdarzeń, którego można użyć do rejestrowania poleceń usługi.The installer also associates each service with an event log that you can use to record service commands. main()Funkcja w pliku wykonywalnym określa, które usługi powinny być uruchamiane.The main() function in the executable defines which services should run. Bieżącym katalogiem roboczym usługi jest katalog systemowy, a nie katalog, w którym znajduje się plik wykonywalny.The current working directory of the service is the system directory, not the directory in which the executable is located.

Po uruchomieniu usługi system lokalizuje plik wykonywalny i uruchamia OnStart metodę dla tej usługi, która znajduje się w pliku wykonywalnym.When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. Jednak uruchomienie usługi nie jest takie samo jak w przypadku uruchamiania pliku wykonywalnego.However, running the service is not the same as running the executable. Plik wykonywalny ładuje tylko usługę.The executable only loads the service. Dostęp do usługi (na przykład uruchomiono i zatrzymano) za pomocą Menedżera kontroli usług.The service is accessed (for example, started and stopped) through the Service Control Manager.

Plik wykonywalny wywołuje ServiceBase konstruktora klasy pochodnej przy pierwszym wywołaniu metody Start w usłudze.The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. OnStartMetoda obsługi poleceń jest wywoływana natychmiast po wykonaniu konstruktora.The OnStart command-handling method is called immediately after the constructor executes. Konstruktor nie jest wykonywany ponownie po pierwszym załadowaniu usługi, dlatego konieczne jest oddzielenie przetwarzania wykonywanego przez konstruktora z tego wykonywanego przez 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. Wszystkie zasoby, które mogą być wydane przez program, OnStop powinny być utworzone w programie OnStart .Any resources that can be released by OnStop should be created in OnStart. Tworzenie zasobów w konstruktorze uniemożliwia ich utworzenie prawidłowo, jeśli usługa zostanie uruchomiona ponownie po OnStop wydaniu zasobów.Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

Menedżer sterowania usługami (SCM) zapewnia możliwość korzystania z usługi.The Service Control Manager (SCM) provides a way to interact with the service. Menedżer SCM służy do przekazywania poleceń uruchamiania, zatrzymywania, wstrzymywania, kontynuowania lub niestandardowych do usługi.You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. Menedżer SCM używa wartości CanStop i, CanPauseAndContinue Aby określić, czy usługa akceptuje polecenia Zatrzymaj, Wstrzymaj lub Kontynuuj.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. Zatrzymaj, Wstrzymaj i Kontynuuj są włączone w menu kontekstowym SCM tylko wtedy, gdy odpowiednia właściwość CanStop lub CanPauseAndContinue znajduje się true w klasie usługi.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. Jeśli ta funkcja jest włączona, polecenie jest przesyłane do usługi, a OnStop , OnPause lub OnContinue jest wywoływana.If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. Jeśli CanStop , CanShutdown , lub CanPauseAndContinue jest false , odpowiadająca metoda obsługi poleceń (taka jak OnStop ) nie zostanie przetworzona, nawet jeśli zaimplementowano metodę.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.

Klasy można użyć ServiceController do programistycznego działania usługi SCM korzystającej z interfejsu użytkownika.You can use the ServiceController class to do programmatically what the SCM does using a user interface. Można zautomatyzować zadania dostępne w konsoli programu.You can automate the tasks available in the console. Jeśli CanStop , CanShutdown , lub CanPauseAndContinue jest, true ale nie zaimplementowano odpowiedniej metody obsługi poleceń (na przykład OnStop ) system zgłasza wyjątek i ignoruje polecenie.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.

Nie jest konieczne implementowanie OnStart , OnStop ani żadnej innej metody w ServiceBase .You do not have to implement OnStart, OnStop, or any other method in ServiceBase. Jednak zachowanie usługi jest opisane w OnStart , dlatego należy je przesłonić co najmniej na poziomie tego elementu członkowskiego.However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. main()Funkcja pliku wykonywalnego rejestruje usługę w pliku wykonywalnym przy użyciu Menedżera kontroli usług przez wywołanie Run metody.The main() function of the executable registers the service in the executable with the Service Control Manager by calling the Run method. ServiceNameWłaściwość ServiceBase obiektu przeniesiona do Run metody musi być zgodna z ServiceName właściwością Instalatora usługi dla tej usługi.The ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

Programu można użyć InstallUtil.exe do zainstalowania usług w systemie.You can use InstallUtil.exe to install services on your system.

Uwaga

Możesz określić dziennik inny niż dziennik zdarzeń aplikacji, aby otrzymywać powiadomienia o wywołaniach usług, ale ani AutoLog Właściwość ani nie EventLog może zapisywać w dzienniku niestandardowym.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. Ustaw AutoLog na false , jeśli nie chcesz używać automatycznego rejestrowania.Set AutoLog to false if you do not want to use automatic logging.

Konstruktory

ServiceBase()

Tworzy nowe wystąpienie klasy ServiceBase.Creates a new instance of the ServiceBase class.

Pola

MaxNameLength

Wskazuje maksymalny rozmiar nazwy usługi.Indicates the maximum size for a service name.

Właściwości

AutoLog

Wskazuje, czy w dzienniku zdarzeń mają być zgłaszane polecenia Uruchom, Zatrzymaj, Wstrzymaj i Kontynuuj.Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent

Pobiera lub ustawia wartość wskazującą, czy usługa może obsługiwać powiadomienia o zmianach stanu komputera.Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent

Pobiera lub ustawia wartość wskazującą, czy usługa może obsługiwać zdarzenia zmiany sesji odebrane z sesji serwera terminali.Gets or sets a value that indicates whether the service can handle session change events received from a Terminal Server session.

CanPauseAndContinue

Pobiera lub ustawia wartość wskazującą, czy można wstrzymywać i wznawiać usługę.Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents

Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie.Gets a value indicating whether the component can raise an event.

(Odziedziczone po Component)
CanShutdown

Pobiera lub ustawia wartość wskazującą, czy usługa powinna być powiadamiana o zamknięciu systemu.Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop

Pobiera lub ustawia wartość wskazującą, czy usługa może zostać zatrzymana po jej uruchomieniu.Gets or sets a value indicating whether the service can be stopped once it has started.

Container

Pobiera IContainer , który zawiera Component .Gets the IContainer that contains the Component.

(Odziedziczone po Component)
DesignMode

Pobiera wartość wskazującą, czy Component jest aktualnie w trybie projektowania.Gets a value that indicates whether the Component is currently in design mode.

(Odziedziczone po Component)
EventLog

Pobiera dziennik zdarzeń, którego można użyć do zapisu powiadomień o wywołaniach poleceń usługi, takich jak uruchamianie i zatrzymywanie, w dzienniku zdarzeń aplikacji.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

Pobiera listę programów obsługi zdarzeń, które są dołączone do tego elementu Component .Gets the list of event handlers that are attached to this Component.

(Odziedziczone po Component)
ExitCode

Pobiera lub ustawia kod zakończenia usługi.Gets or sets the exit code for the service.

ServiceHandle

Pobiera uchwyt kontroli usługi dla usługi.Gets the service control handle for the service.

ServiceName

Pobiera lub ustawia krótką nazwę używaną do identyfikowania usługi w systemie.Gets or sets the short name used to identify the service to the system.

Site

Pobiera lub ustawia wartość ISite Component .Gets or sets the ISite of the Component.

(Odziedziczone po Component)

Metody

CreateObjRef(Type)

Tworzy obiekt, który zawiera wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikacji z obiektem zdalnym.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Odziedziczone po MarshalByRefObject)
Dispose()

Zwalnia wszelkie zasoby używane przez element Component.Releases all resources used by the Component.

(Odziedziczone po Component)
Dispose(Boolean)

Usuwa zasoby (inne niż pamięć) używane przez ServiceBase .Disposes of the resources (other than memory) used by the ServiceBase.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetLifetimeService()

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
GetService(Type)

Zwraca obiekt, który reprezentuje usługę dostarczoną przez Component lub przez Container .Returns an object that represents a service provided by the Component or by its Container.

(Odziedziczone po Component)
GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
InitializeLifetimeService()

Uzyskuje obiekt usługi istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy skróconą kopię bieżącego MarshalByRefObject obiektu.Creates a shallow copy of the current MarshalByRefObject object.

(Odziedziczone po MarshalByRefObject)
OnContinue()

Po zaimplementowaniu w klasie pochodnej program jest OnContinue() uruchamiany, gdy do usługi jest wysyłane polecenie Continue przez Menedżera sterowania usługami (SCM).When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). Określa akcje, które należy wykonać, gdy usługa wznawia normalne działanie po jego wstrzymaniu.Specifies actions to take when a service resumes normal functioning after being paused.

OnCustomCommand(Int32)

Po zaimplementowaniu w klasie pochodnej OnCustomCommand(Int32) wykonuje się, gdy Menedżer sterowania usługami przekazuje polecenie niestandardowe do usługi.When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. Określa akcje do wykonania, gdy występuje polecenie o określonej wartości parametru.Specifies actions to take when a command with the specified parameter value occurs.

OnPause()

Po zaimplementowaniu w klasie pochodnej jest wykonywane, gdy polecenie Pause jest wysyłane do usługi przez menedżera kontroli usług (SCM).When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). Określa akcje do wykonania w przypadku wstrzymania usługi.Specifies actions to take when a service pauses.

OnPowerEvent(PowerBroadcastStatus)

Po zaimplementowaniu w klasie pochodnej wykonuje się, gdy zmienił się stan zasilacza komputera.When implemented in a derived class, executes when the computer's power status has changed. Dotyczy to komputerów przenośnych, gdy przechodzą w tryb wstrzymania, który nie jest taki sam jak w przypadku zamknięcia systemu.This applies to laptop computers when they go into suspended mode, which is not the same as a system shutdown.

OnSessionChange(SessionChangeDescription)

Wykonuje się po odebraniu zdarzenia zmiany z sesji serwera terminali.Executes when a change event is received from a Terminal Server session.

OnShutdown()

Po zaimplementowaniu w klasie pochodnej wykonuje się, gdy system jest zamykany.When implemented in a derived class, executes when the system is shutting down. Określa, co powinno następować bezpośrednio przed zamknięciem systemu.Specifies what should occur immediately prior to the system shutting down.

OnStart(String[])

Po zaimplementowaniu w klasie pochodnej jest wykonywane, gdy polecenie uruchamiania jest wysyłane do usługi przez menedżera kontroli usług (SCM) lub podczas uruchamiania systemu operacyjnego (w przypadku usługi, która jest uruchamiana automatycznie).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). Określa akcje, które należy wykonać, gdy usługa zostanie uruchomiona.Specifies actions to take when the service starts.

OnStop()

Po zaimplementowaniu w klasie pochodnej jest wykonywane, gdy polecenie zatrzymania jest wysyłane do usługi przez menedżera kontroli usług (SCM).When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Określa akcje do wykonania, gdy usługa zostanie zatrzymana.Specifies actions to take when a service stops running.

RequestAdditionalTime(Int32)

Żąda dodatkowego czasu dla oczekującej operacji.Requests additional time for a pending operation.

Run(ServiceBase)

Rejestruje plik wykonywalny dla usługi przy użyciu Menedżera kontroli usług (SCM).Registers the executable for a service with the Service Control Manager (SCM).

Run(ServiceBase[])

Rejestruje plik wykonywalny dla wielu usług za pomocą Menedżera sterowania usługami (SCM).Registers the executable for multiple services with the Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr)

Rejestruje procedurę obsługi poleceń i uruchamia usługę.Registers the command handler and starts the service.

Stop()

Kończy usługę wykonywania.Stops the executing service.

ToString()

Zwraca wartość String zawierającą nazwę Component (jeśli istnieje).Returns a String containing the name of the Component, if any. Ta metoda nie powinna być przesłaniana.This method should not be overridden.

(Odziedziczone po Component)

Zdarzenia

Disposed

Występuje, gdy składnik zostanie usunięty przez wywołanie Dispose() metody.Occurs when the component is disposed by a call to the Dispose() method.

(Odziedziczone po Component)

Dotyczy

Zobacz też