ServiceBase Klasa

Definicja

Udostępnia klasę podstawową dla usługi, która będzie istnieć jako część aplikacji usługi. ServiceBase należy opierać się na tworzeniu nowej klasy usługi.

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

Pochodzi od ServiceBase podczas definiowania klasy usługi w aplikacji usługi. Każda przydatna usługa zastępuje OnStart metody i OnStop . Aby uzyskać dodatkowe funkcje, można zastąpić OnPause i OnContinue za pomocą określonego zachowania w odpowiedzi na zmiany stanu usługi.

Usługa to długotrwały plik wykonywalny, który nie obsługuje interfejsu użytkownika i który może nie działać na zalogowanym koncie użytkownika. Usługa może być uruchamiana bez logowania użytkownika na komputerze.

Domyślnie usługi są uruchamiane na koncie systemowym, które nie jest takie samo jak konto administratora. Nie można zmienić praw konta systemowego. Alternatywnie można użyć elementu , ServiceProcessInstaller aby określić konto użytkownika, w ramach którego usługa zostanie uruchomiona.

Plik wykonywalny może zawierać więcej niż jedną usługę, ale musi zawierać oddzielną ServiceInstaller dla każdej usługi. Wystąpienie ServiceInstaller rejestruje usługę w systemie. Instalator kojarzy również każdą usługę z dziennikiem zdarzeń, którego można użyć do rejestrowania poleceń usługi. Funkcja main() w pliku wykonywalnego definiuje, które usługi powinny być uruchamiane. Bieżący katalog roboczy usługi to katalog systemowy, a nie katalog, w którym znajduje się plik wykonywalny.

Po uruchomieniu usługi system lokalizuje plik wykonywalny i uruchamia OnStart metodę dla tej usługi zawartej w pliku wykonywalnym. Jednak uruchomienie usługi nie jest takie samo jak uruchomienie pliku wykonywalnego. Plik wykonywalny ładuje tylko usługę. Usługa jest dostępna (na przykład uruchomiona i zatrzymana) za pośrednictwem Menedżera kontroli usług.

Plik wykonywalny wywołuje konstruktor klasy pochodnej ServiceBase przy pierwszym wywołaniu metody Start w usłudze. OnStart Metoda obsługi poleceń jest wywoływana natychmiast po wykonaniu konstruktora. Konstruktor nie jest wykonywany ponownie po pierwszym załadowaniu usługi, dlatego konieczne jest oddzielenie przetwarzania wykonywanego przez konstruktora od wykonywanego przez OnStartprogram . Wszystkie zasoby, które można zwolnić OnStop , powinny zostać utworzone w programie OnStart. Tworzenie zasobów w konstruktorze uniemożliwia ich poprawne utworzenie, jeśli usługa zostanie uruchomiona ponownie po OnStop zwolnieniu zasobów.

Program Service Control Manager (SCM) umożliwia interakcję z usługą. Za pomocą programu SCM można przekazać polecenia Start, Stop, Pause, Continue lub niestandardowe do usługi. Narzędzie SCM używa wartości CanStop i CanPauseAndContinue w celu określenia, czy usługa akceptuje polecenia Zatrzymaj, Wstrzymaj lub Kontynuuj. 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. Jeśli to ustawienie jest włączone, polecenie jest przekazywane do usługi i OnStopOnPause, lub OnContinue jest wywoływane. Jeśli CanStop, CanShutdownlub CanPauseAndContinue jest false, odpowiednia metoda obsługi poleceń (na przykład OnStop) nie zostanie przetworzona, nawet jeśli zaimplementowano metodę.

Klasy można użyć ServiceController do programowego wykonywania czynności, które programowo wykonuje SCM przy użyciu interfejsu użytkownika. Zadania dostępne w konsoli programu można zautomatyzować. Jeśli CanStopelement , CanShutdownlub CanPauseAndContinue true nie zaimplementowano odpowiedniej metody obsługi poleceń (np OnStop. ) system zgłasza wyjątek i ignoruje polecenie.

Nie trzeba implementować OnStartmetody , OnStopani żadnej innej metody w ServiceBaseprogramie . Jednak zachowanie usługi jest opisane w temacie OnStart, więc co najmniej ten element członkowski powinien zostać zastąpiony. Funkcja main() pliku wykonywalnego rejestruje usługę w pliku wykonywalnego za pomocą Menedżera kontroli usług przez wywołanie Run metody . Właściwość ServiceName ServiceBase obiektu przekazanego do Run metody musi być zgodna ServiceName z właściwością instalatora usługi dla tej usługi.

Usług można użyć InstallUtil.exe do zainstalowania usług w systemie.

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ść nie EventLog może zapisywać w dzienniku niestandardowym. Ustaw wartość AutoLog na false , jeśli nie chcesz używać automatycznego rejestrowania.

Konstruktory

ServiceBase()

Tworzy nowe wystąpienie klasy ServiceBase.

Pola

MaxNameLength

Wskazuje maksymalny rozmiar nazwy usługi.

Właściwości

AutoLog

Wskazuje, czy w dzienniku zdarzeń ma być raport polecenia Start, Stop, Pause i Continue.

CanHandlePowerEvent

Pobiera lub ustawia wartość wskazującą, czy usługa może obsługiwać powiadomienia o zmianach stanu zasilania komputera.

CanHandleSessionChangeEvent

Pobiera lub ustawia wartość wskazującą, czy usługa może obsługiwać zdarzenia zmiany sesji odebrane z sesji serwera terminali.

CanPauseAndContinue

Pobiera lub ustawia wartość wskazującą, czy można wstrzymać i wznowić usługę.

CanRaiseEvents

Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie.

(Odziedziczone po Component)
CanShutdown

Pobiera lub ustawia wartość wskazującą, czy usługa powinna być powiadamiana o zamknięciu systemu.

CanStop

Pobiera lub ustawia wartość wskazującą, czy usługa może zostać zatrzymana po jej uruchomieniu.

Container

Pobiera element IContainer zawierający element Component.

(Odziedziczone po Component)
DesignMode

Pobiera wartość wskazującą, czy Component element jest obecnie w trybie projektowania.

(Odziedziczone po Component)
EventLog

Pobiera dziennik zdarzeń, którego można użyć do zapisywania powiadomień o wywołaniach poleceń usługi, takich jak Uruchamianie i zatrzymywanie, do dziennika zdarzeń aplikacji.

Events

Pobiera listę programów obsługi zdarzeń dołączonych do tego Componentelementu .

(Odziedziczone po Component)
ExitCode

Pobiera lub ustawia kod zakończenia dla usługi.

ServiceHandle

Pobiera dojście kontroli usługi dla usługi.

ServiceName

Pobiera lub ustawia krótką nazwę używaną do identyfikowania usługi w systemie.

Site

Pobiera lub ustawia ISite element .Component

(Odziedziczone po Component)

Metody

CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
Dispose()

Zwalnia wszelkie zasoby używane przez element Component.

(Odziedziczone po Component)
Dispose(Boolean)

Usuwa zasoby (inne niż pamięć) używane przez program ServiceBase.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Nieaktualne.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetService(Type)

Zwraca obiekt reprezentujący usługę dostarczaną przez Component obiekt lub przez obiekt Container.

(Odziedziczone po Component)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InitializeLifetimeService()
Nieaktualne.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
OnContinue()

Po zaimplementowaniu w klasie pochodnej jest uruchamiane po OnContinue() wysłaniu polecenia Continue do usługi przez Menedżera sterowania usługami (SCM). Określa akcje do wykonania, gdy usługa wznowi normalne działanie po wstrzymaniu.

OnCustomCommand(Int32)

Po zaimplementowaniu w klasie OnCustomCommand(Int32) pochodnej program wykonuje polecenie , gdy program Service Control Manager (SCM) przekazuje do usługi polecenie niestandardowe. Określa akcje do wykonania, gdy występuje polecenie z określoną wartością parametru.

OnPause()

Po zaimplementowaniu w klasie pochodnej polecenie wstrzymania jest wysyłane do usługi przez menedżera kontroli usług (SCM). Określa akcje do wykonania, gdy usługa zostanie wstrzymana.

OnPowerEvent(PowerBroadcastStatus)

Po zaimplementowaniu w klasie pochodnej program wykonuje polecenie po zmianie stanu zasilania komputera. Dotyczy to komputerów przenośnych po przejściu do trybu wstrzymania, który nie jest taki sam jak zamknięcie systemu.

OnSessionChange(SessionChangeDescription)

Wykonuje polecenie po odebraniu zdarzenia zmiany z sesji serwera terminali.

OnShutdown()

Po zaimplementowaniu w klasie pochodnej program jest wykonywany po zamknięciu systemu. Określa, co powinno nastąpić bezpośrednio przed zamknięciem systemu.

OnStart(String[])

Po zaimplementowaniu w klasie pochodnej program wykonuje polecenie Uruchamiania do usługi przez menedżera kontroli usług (SCM) lub po uruchomieniu systemu operacyjnego (dla usługi uruchamianej automatycznie). Określa akcje do wykonania po uruchomieniu usługi.

OnStop()

Po zaimplementowaniu w klasie pochodnej polecenie zatrzymania jest wysyłane do usługi przez menedżera kontroli usług (SCM). Określa akcje do wykonania, gdy usługa przestanie działać.

RequestAdditionalTime(Int32)

Żąda dodatkowego czasu na oczekującą operację.

RequestAdditionalTime(TimeSpan)

Gdy ta metoda jest wywoływana z OnStart, OnStop, OnPause lub OnContinue, określona wskazówka oczekiwania jest przekazywana do Menedżera kontroli usług, aby uniknąć oznaczania usługi jako nie odpowiada.

Run(ServiceBase)

Rejestruje plik wykonywalny usługi za pomocą programu Service Control Manager (SCM).

Run(ServiceBase[])

Rejestruje plik wykonywalny dla wielu usług za pomocą programu Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr)

Rejestruje program obsługi poleceń i uruchamia usługę.

Stop()

Zatrzymuje wykonywanie usługi.

ToString()

Zwraca wartość String zawierającą nazwę Componentobiektu , jeśli istnieje. Ta metoda nie powinna być zastępowana.

(Odziedziczone po Component)

Zdarzenia

Disposed

Występuje, gdy składnik jest usuwany przez wywołanie Dispose() metody .

(Odziedziczone po Component)

Dotyczy

Zobacz też