ServiceController Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy Windows szolgáltatást jelöl, amely lehetővé teszi egy futó vagy leállított szolgáltatáshoz való csatlakozást, a módosítást vagy az információk lekérését.
public ref class ServiceController : System::ComponentModel::Component
public class ServiceController : System.ComponentModel.Component
[System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")]
public class ServiceController : System.ComponentModel.Component
type ServiceController = class
inherit Component
[<System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")>]
type ServiceController = class
inherit Component
Public Class ServiceController
Inherits Component
- Öröklődés
- Attribútumok
Példák
Az alábbi példa bemutatja, hogy az ServiceController osztály használatával szabályozható a SimpleService szolgáltatás példája.
using System;
using System.ServiceProcess;
using System.Diagnostics;
using System.Threading;
namespace ServiceControllerSample
{
class Program
{
public enum SimpleServiceCustomCommands
{ StopWorker = 128, RestartWorker, CheckWorker };
static void Main(string[] args)
{
ServiceController[] scServices;
scServices = ServiceController.GetServices();
foreach (ServiceController scTemp in scServices)
{
if (scTemp.ServiceName == "Simple Service")
{
// Display properties for the Simple Service sample
// from the ServiceBase example.
ServiceController sc = new ServiceController("Simple Service");
Console.WriteLine("Status = " + sc.Status);
Console.WriteLine("Can Pause and Continue = " + sc.CanPauseAndContinue);
Console.WriteLine("Can ShutDown = " + sc.CanShutdown);
Console.WriteLine("Can Stop = " + sc.CanStop);
if (sc.Status == ServiceControllerStatus.Stopped)
{
sc.Start();
while (sc.Status == ServiceControllerStatus.Stopped)
{
Thread.Sleep(1000);
sc.Refresh();
}
}
// Issue custom commands to the service
// enum SimpleServiceCustomCommands
// { StopWorker = 128, RestartWorker, CheckWorker };
sc.ExecuteCommand((int)SimpleServiceCustomCommands.StopWorker);
sc.ExecuteCommand((int)SimpleServiceCustomCommands.RestartWorker);
sc.Pause();
while (sc.Status != ServiceControllerStatus.Paused)
{
Thread.Sleep(1000);
sc.Refresh();
}
Console.WriteLine("Status = " + sc.Status);
sc.Continue();
while (sc.Status == ServiceControllerStatus.Paused)
{
Thread.Sleep(1000);
sc.Refresh();
}
Console.WriteLine("Status = " + sc.Status);
sc.Stop();
while (sc.Status != ServiceControllerStatus.Stopped)
{
Thread.Sleep(1000);
sc.Refresh();
}
Console.WriteLine("Status = " + sc.Status);
String[] argArray = new string[] { "ServiceController arg1", "ServiceController arg2" };
sc.Start(argArray);
while (sc.Status == ServiceControllerStatus.Stopped)
{
Thread.Sleep(1000);
sc.Refresh();
}
Console.WriteLine("Status = " + sc.Status);
// Display the event log entries for the custom commands
// and the start arguments.
EventLog el = new EventLog("Application");
EventLogEntryCollection elec = el.Entries;
foreach (EventLogEntry ele in elec)
{
if (ele.Source.IndexOf("SimpleService.OnCustomCommand") >= 0 |
ele.Source.IndexOf("SimpleService.Arguments") >= 0)
Console.WriteLine(ele.Message);
}
}
}
}
}
}
// This sample displays the following output if the Simple Service
// sample is running:
//Status = Running
//Can Pause and Continue = True
//Can ShutDown = True
//Can Stop = True
//Status = Paused
//Status = Running
//Status = Stopped
//Status = Running
//4:14:49 PM - Custom command received: 128
//4:14:49 PM - Custom command received: 129
//ServiceController arg1
//ServiceController arg2
Imports System.ServiceProcess
Imports System.Diagnostics
Imports System.Threading
Class Program
Public Enum SimpleServiceCustomCommands
StopWorker = 128
RestartWorker
CheckWorker
End Enum 'SimpleServiceCustomCommands
Shared Sub Main(ByVal args() As String)
Dim scServices() As ServiceController
scServices = ServiceController.GetServices()
Dim scTemp As ServiceController
For Each scTemp In scServices
If scTemp.ServiceName = "Simple Service" Then
' Display properties for the Simple Service sample
' from the ServiceBase example
Dim sc As New ServiceController("Simple Service")
Console.WriteLine("Status = " + sc.Status.ToString())
Console.WriteLine("Can Pause and Continue = " + _
sc.CanPauseAndContinue.ToString())
Console.WriteLine("Can ShutDown = " + sc.CanShutdown.ToString())
Console.WriteLine("Can Stop = " + sc.CanStop.ToString())
If sc.Status = ServiceControllerStatus.Stopped Then
sc.Start()
While sc.Status = ServiceControllerStatus.Stopped
Thread.Sleep(1000)
sc.Refresh()
End While
End If
' Issue custom commands to the service
' enum SimpleServiceCustomCommands
' { StopWorker = 128, RestartWorker, CheckWorker };
sc.ExecuteCommand(Fix(SimpleServiceCustomCommands.StopWorker))
sc.ExecuteCommand(Fix(SimpleServiceCustomCommands.RestartWorker))
sc.Pause()
While sc.Status <> ServiceControllerStatus.Paused
Thread.Sleep(1000)
sc.Refresh()
End While
Console.WriteLine("Status = " + sc.Status.ToString())
sc.Continue()
While sc.Status = ServiceControllerStatus.Paused
Thread.Sleep(1000)
sc.Refresh()
End While
Console.WriteLine("Status = " + sc.Status.ToString())
sc.Stop()
While sc.Status <> ServiceControllerStatus.Stopped
Thread.Sleep(1000)
sc.Refresh()
End While
Console.WriteLine("Status = " + sc.Status.ToString())
Dim argArray() As String = {"ServiceController arg1", "ServiceController arg2"}
sc.Start(argArray)
While sc.Status = ServiceControllerStatus.Stopped
Thread.Sleep(1000)
sc.Refresh()
End While
Console.WriteLine("Status = " + sc.Status.ToString())
' Display the event log entries for the custom commands
' and the start arguments.
Dim el As New EventLog("Application")
Dim elec As EventLogEntryCollection = el.Entries
Dim ele As EventLogEntry
For Each ele In elec
If ele.Source.IndexOf("SimpleService.OnCustomCommand") >= 0 Or ele.Source.IndexOf("SimpleService.Arguments") >= 0 Then
Console.WriteLine(ele.Message)
End If
Next ele
End If
Next scTemp
End Sub
End Class
' This sample displays the following output if the Simple Service
' sample is running:
'Status = Running
'Can Pause and Continue = True
'Can ShutDown = True
'Can Stop = True
'Status = Paused
'Status = Running
'Status = Stopped
'Status = Running
'4:14:49 PM - Custom command received: 128
'4:14:49 PM - Custom command received: 129
'ServiceController arg1
'ServiceController arg2
Megjegyzések
Az ServiceController osztály használatával csatlakozhat a meglévő szolgáltatásokhoz, és szabályozhatja a meglévő szolgáltatások viselkedését. A ServiceController osztály egy példányának létrehozásakor meg kell adnia annak tulajdonságait, hogy az egy adott Windows szolgáltatással működjön együtt. Ezután az osztály használatával elindíthatja, leállíthatja és egyéb módon módosíthatja a szolgáltatást.
Az összetevőt valószínűleg rendszergazdai kapacitásban fogja használni ServiceController . Létrehozhat például egy Windows vagy webalkalmazást, amely egyéni parancsokat küld egy szolgáltatásnak a ServiceController példányon keresztül. Ez hasznos lehet, mert a Service Control Manager (SCM) Microsoft Management Console beépülő modul nem támogatja az egyéni parancsokat.
Miután létrehozott egy példányt ServiceController, két tulajdonságot kell beállítania rajta, hogy azonosítsa azt a szolgáltatást, amellyel interakcióba lép: a számítógép nevét és a vezérelni kívánt szolgáltatás nevét.
Note
Alapértelmezés szerint MachineName a helyi számítógépre van állítva, ezért csak akkor kell módosítania, ha a példányt egy másik számítógépre szeretné állítani.
A szolgáltatás szerzője általában olyan kódot ír, amely testre szabja az adott parancshoz társított műveletet. Egy szolgáltatás tartalmazhat például egy parancsra ServiceBase.OnPause válaszoló kódot. Ebben az esetben a feladat egyéni feldolgozása lefut, Pause mielőtt a rendszer szünetelteti a szolgáltatást.
A szolgáltatás által feldolgozható parancsok halmaza a tulajdonságaitól függ; például beállíthatja a CanStop szolgáltatás tulajdonságát false. Ez a beállítás elérhetetlenné teszi a Stop parancsot az adott szolgáltatásban; megakadályozza a szolgáltatás SCM-ből való leállítását a szükséges gomb letiltásával. Ha megpróbálja leállítani a szolgáltatást a kódból, a rendszer hibát jelez, és megjeleníti a "Nem sikerült leállni servicename" hibaüzenetet.
Konstruktorok
| Name | Description |
|---|---|
| ServiceController() |
Inicializálja az ServiceController osztály egy új példányát, amely nincs hozzárendelve egy adott szolgáltatáshoz. |
| ServiceController(String, String) |
Inicializálja az ServiceController osztály új példányát, amely a megadott számítógépen lévő meglévő szolgáltatáshoz van társítva. |
| ServiceController(String) |
Inicializálja az ServiceController osztály új példányát, amely a helyi számítógépen lévő meglévő szolgáltatáshoz van társítva. |
Tulajdonságok
| Name | Description |
|---|---|
| CanPauseAndContinue |
Beolvas egy értéket, amely jelzi, hogy a szolgáltatás szüneteltethető-e és folytatható-e. |
| CanRaiseEvents |
Beolvas egy értéket, amely jelzi, hogy az összetevő képes-e eseményt létrehozni. (Öröklődés forrása Component) |
| CanShutdown |
Egy értéket kap, amely jelzi, hogy a szolgáltatás értesítést kapjon-e a rendszer leállásakor. |
| CanStop |
Beolvas egy értéket, amely jelzi, hogy a szolgáltatás leállítható-e az elindítása után. |
| Container |
Lekéri a IContainer .Component (Öröklődés forrása Component) |
| DependentServices |
Lekéri a példányhoz ServiceController társított szolgáltatástól függő szolgáltatások készletét. |
| DesignMode |
Olyan értéket kap, amely jelzi, hogy az Component aktuálisan tervezési módban van-e. (Öröklődés forrása Component) |
| DisplayName |
Lekéri vagy beállítja a szolgáltatás rövid nevét. |
| Events |
Lekéri az ehhez Componentcsatolt eseménykezelők listáját. (Öröklődés forrása Component) |
| MachineName |
Lekéri vagy beállítja annak a számítógépnek a nevét, amelyen a szolgáltatás található. |
| ServiceHandle |
Lekéri a szolgáltatás fogópontját. |
| ServiceName |
Lekéri vagy beállítja a példány által hivatkozott szolgáltatást azonosító nevet. |
| ServicesDependedOn |
A szolgáltatás által nyújtott szolgáltatások készlete. |
| ServiceType |
Lekéri az objektum által hivatkozott szolgáltatás típusát. |
| Site |
Lekéri vagy megadja a ISite értékét a Component-hez. (Öröklődés forrása Component) |
| StartType |
Lekéri az objektum által ServiceController képviselt szolgáltatás indítását jelző értéket. |
| Status |
Lekéri a példány által hivatkozott szolgáltatás állapotát. |
Metódusok
| Name | Description |
|---|---|
| Close() |
Leválasztja a ServiceController példányt a szolgáltatásról, és felszabadítja a példány által lefoglalt összes erőforrást. |
| Continue() |
A szolgáltatás szüneteltetése után is folytatódik. |
| CreateObjRef(Type) |
Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt. (Öröklődés forrása MarshalByRefObject) |
| Dispose() |
Felszabadítja a .-hez használt összes erőforrást Component. (Öröklődés forrása Component) |
| Dispose(Boolean) |
Felszabadítja a felügyelt erőforrások által ServiceController használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat. |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| ExecuteCommand(Int32) |
Végrehajt egy egyéni parancsot a szolgáltatáson. |
| GetDevices() |
Lekéri az eszközillesztő-szolgáltatásokat a helyi számítógépen. |
| GetDevices(String) |
Lekéri az eszközillesztő-szolgáltatásokat a megadott számítógépen. |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetLifetimeService() |
Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot. (Öröklődés forrása MarshalByRefObject) |
| GetService(Type) |
Olyan objektumot ad vissza, amely az általa vagy annak által ComponentContainernyújtott szolgáltatást jelöli. (Öröklődés forrása Component) |
| GetServices() |
Lekéri a helyi számítógépen található összes szolgáltatást, kivéve az eszközillesztő-szolgáltatásokat. |
| GetServices(String) |
Lekéri a megadott számítógépen található összes szolgáltatást, kivéve az eszközillesztő-szolgáltatásokat. |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| InitializeLifetimeService() |
Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához. (Öröklődés forrása MarshalByRefObject) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| MemberwiseClone(Boolean) |
Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre. (Öröklődés forrása MarshalByRefObject) |
| Pause() |
Felfüggeszti egy szolgáltatás működését. |
| Refresh() |
A tulajdonságértékek frissítéséhez állítsa vissza a tulajdonságokat az aktuális értékükre. |
| Start() |
Elindítja a szolgáltatást, és nem ad át argumentumokat. |
| Start(String[]) |
Elindít egy szolgáltatást, átadva a megadott argumentumokat. |
| Stop() |
Leállítja ezt a szolgáltatást és a szolgáltatástól függő összes szolgáltatást. |
| ToString() |
String A ( ha van) nevet tartalmazó értéket Componentad vissza. Ezt a módszert nem szabad felülírni. (Öröklődés forrása Component) |
| WaitForStatus(ServiceControllerStatus, TimeSpan) |
Megvárja, amíg a szolgáltatás eléri a megadott állapotot, vagy hogy a megadott időtúllépés lejárjon. |
| WaitForStatus(ServiceControllerStatus) |
Végtelenül megvárja, amíg a szolgáltatás eléri a megadott állapotot. |
esemény
| Name | Description |
|---|---|
| Disposed |
Akkor fordul elő, ha az összetevőt a metódus hívása megsemmisíti Dispose() . (Öröklődés forrása Component) |