ServiceBase Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
Wyczerpij się z 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 jest długotrwałym plikiem wykonywalnym, który nie obsługuje interfejsu użytkownika i który może nie być uruchamiany na zalogowanym koncie użytkownika. Usługa może działać bez logowania się na komputerze przez żadnego użytkownika.
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żesz 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, zawartą w pliku wykonywalnym. Jednak uruchomienie usługi nie jest takie samo jak uruchomienie pliku wykonywalnego. Plik wykonywalny ładuje tylko usługę. Dostęp do usługi (na przykład uruchomiony i zatrzymany) jest uzyskiwany za pośrednictwem Menedżera sterowania usługami.
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 tego wykonywanego przez OnStartprogram . Wszystkie zasoby, które można zwolnić OnStop , należy utworzyć w programie OnStart. Tworzenie zasobów w konstruktorze uniemożliwia ich prawidłowe utworzenie, jeśli usługa zostanie uruchomiona ponownie po OnStop zwolnieniu zasobów.
Program Service Control Manager (SCM) umożliwia interakcję z usługą. Narzędzie SCM umożliwia przekazywanie poleceń Start, Stop, Pause, Continue lub niestandardowych 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 programu 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ę.
Możesz użyć ServiceController klasy , aby programowo wykonywać działania programu SCM przy użyciu interfejsu użytkownika. Zadania dostępne w konsoli programu można zautomatyzować. Jeśli CanStop, CanShutdownlub CanPauseAndContinue nie true
zaimplementowano odpowiedniej metody obsługi poleceń (na przykład OnStop), system zgłasza wyjątek i ignoruje polecenie .
Nie trzeba implementować OnStartmetody , OnStopani żadnej innej metody w pliku ServiceBase. Jednak zachowanie usługi zostało opisane w OnStarttemacie , więc co najmniej ten element członkowski powinien zostać zastąpiony. Funkcja main()
pliku wykonywalnego rejestruje usługę w pliku wykonywalny za pomocą Menedżera sterowania usługami, wywołując metodę Run . Właściwość ServiceName obiektu przekazanego ServiceBase do Run metody musi być zgodna z właściwością ServiceName instalatora usługi dla tej usługi.
Możesz użyć InstallUtil.exe
polecenia , aby zainstalować usługi 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ń mają być raportowe polecenia Uruchamiania, Zatrzymywania, Wstrzymywania i Kontynuuj. |
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, gdy system jest zamykany. |
CanStop |
Pobiera lub ustawia wartość wskazującą, czy usługę można zatrzymać 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 wartość ISite .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() |
Przestarzałe.
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, który reprezentuje usługę dostarczaną przez Component obiekt lub przez element Container. (Odziedziczone po Component) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
InitializeLifetimeService() |
Przestarzałe.
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 dla oczekującej operacji. |
RequestAdditionalTime(TimeSpan) |
Gdy ta metoda jest wywoływana z metody OnStart, OnStop, OnPause lub OnContinue, określona wskazówka oczekiwania jest przekazywana do Menedżera sterowania usługami, aby uniknąć oznaczania usługi jako nie odpowiada. |
Run(ServiceBase) |
Rejestruje plik wykonywalny dla 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) |