ServiceBase Klasa
Definicja
Ważny
Niektóre informacje dotyczą produktów przedpremierowych, które mogą zostać znacznie zmodyfikowane przed premierą. Microsoft nie udziela żadnych gwarancji, ani wyraźnych, ani domniemanych, dotyczących informacji podanych tutaj.
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
- Pochodny
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.
Konstruktorów
| Nazwa | Opis |
|---|---|
| ServiceBase() |
Tworzy nowe wystąpienie klasy ServiceBase. |
Pola
| Nazwa | Opis |
|---|---|
| MaxNameLength |
Wskazuje maksymalny rozmiar nazwy usługi. |
Właściwości
| Nazwa | Opis |
|---|---|
| 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. (Dziedziczone od 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. (Dziedziczone od Component) |
| DesignMode |
Pobiera wartość wskazującą, czy Component element jest obecnie w trybie projektowania. (Dziedziczone od 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 . (Dziedziczone od 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 (Dziedziczone od Component) |
Metody
| Nazwa | Opis |
|---|---|
| CreateObjRef(Type) |
Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym. (Dziedziczone od MarshalByRefObject) |
| Dispose() |
Zwalnia wszelkie zasoby używane przez element Component. (Dziedziczone od 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. (Dziedziczone od Object) |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Dziedziczone od Object) |
| GetLifetimeService() |
Przestarzały.
Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia. (Dziedziczone od MarshalByRefObject) |
| GetService(Type) |
Zwraca obiekt, który reprezentuje usługę dostarczaną przez Component obiekt lub przez element Container. (Dziedziczone od Component) |
| GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Dziedziczone od Object) |
| InitializeLifetimeService() |
Przestarzały.
Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia. (Dziedziczone od MarshalByRefObject) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Dziedziczone od Object) |
| MemberwiseClone(Boolean) |
Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu. (Dziedziczone od 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. (Dziedziczone od Component) |
Zdarzenia
| Nazwa | Opis |
|---|---|
| Disposed |
Występuje, gdy składnik jest usuwany przez wywołanie Dispose() metody . (Dziedziczone od Component) |