ServiceController Sınıf

Tanım

Bir Windows hizmetini temsil eder ve çalışan veya durdurulan bir hizmete bağlanmanızı, hizmeti işlemenizi veya bu hizmet hakkında bilgi almanızı sağlar.

public ref class ServiceController : System::ComponentModel::Component
public ref class ServiceController : IDisposable
public class ServiceController : System.ComponentModel.Component
public class ServiceController : IDisposable
[System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")]
public class ServiceController : System.ComponentModel.Component
type ServiceController = class
    inherit Component
type ServiceController = class
    interface IDisposable
[<System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")>]
type ServiceController = class
    inherit Component
Public Class ServiceController
Inherits Component
Public Class ServiceController
Implements IDisposable
Devralma
ServiceController
Devralma
ServiceController
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki örnekte hizmet örneğini denetlemek için sınıfının kullanımı ServiceController gösterilmektedir SimpleService .

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

Açıklamalar

sınıfını ServiceController kullanarak mevcut hizmetlere bağlanabilir ve bu hizmetlerin davranışını denetleyebilirsiniz. Sınıfının bir örneğini ServiceController oluşturduğunuzda, belirli bir Windows hizmetiyle etkileşim kuracak şekilde özelliklerini ayarlarsınız. Daha sonra hizmeti başlatmak, durdurmak ve başka bir şekilde işlemek için sınıfını kullanabilirsiniz.

Büyük olasılıkla bileşeni bir yönetim kapasitesinde kullanacaksınız ServiceController . Örneğin, örnek aracılığıyla ServiceController bir hizmete özel komutlar gönderen bir Windows veya Web uygulaması oluşturabilirsiniz. Service Control Manager (SCM) Microsoft Yönetim Konsolu ek bileşeni özel komutları desteklemediğinden bu yararlı olabilir.

örneğini ServiceControlleroluşturduktan sonra, etkileşim kurduğu hizmeti tanımlamak için üzerinde iki özellik ayarlamanız gerekir: bilgisayar adı ve denetlemek istediğiniz hizmetin adı.

Not

Varsayılan olarak, MachineName yerel bilgisayara ayarlanmıştır, bu nedenle örneği başka bir bilgisayara işaret etmek için ayarlamak istemediğiniz sürece değiştirmeniz gerekmez.

Genellikle, hizmet yazarı belirli bir komutla ilişkili eylemi özelleştiren kod yazar. Örneğin, bir hizmet bir komuta yanıt vermek için ServiceBase.OnPause kod içerebilir. Bu durumda, sistem hizmeti duraklatmadan önce görev için Pause özel işleme çalıştırılır.

Bir hizmetin işleyebileceği komut kümesi özelliklerine bağlıdır; örneğin, bir hizmetin özelliğini olarak falseayarlayabilirsinizCanStop. Bu ayar, komutu söz konusu hizmette kullanılamaz duruma getirir Stop ; gerekli düğmeyi devre dışı bırakarak hizmeti SCM'den durdurmanızı engeller. Hizmeti kodunuzdan durdurmaya çalışırsanız sistem bir hata oluşturur ve "Durdurulamadı servicename" hata iletisini görüntüler.

Oluşturucular

ServiceController()

Sınıfın ServiceController belirli bir hizmetle ilişkilendirilmemiş yeni bir örneğini başlatır.

ServiceController(String)

Sınıfın ServiceController , yerel bilgisayardaki mevcut bir hizmetle ilişkili yeni bir örneğini başlatır.

ServiceController(String, String)

Belirtilen bilgisayardaki mevcut bir hizmetle ilişkili sınıfının yeni bir örneğini ServiceController başlatır.

Özellikler

CanPauseAndContinue

Hizmetin duraklatılıp sürdürülemeyeceğini belirten bir değer alır.

CanRaiseEvents

Bileşenin olay oluşturup oluşturamayacağını belirten bir değer alır.

(Devralındığı yer: Component)
CanShutdown

Sistem kapatılırken hizmete bildirim gönderilip bildirilmeyeceğini belirten bir değer alır.

CanStop

Hizmetin başlatıldıktan sonra durdurulup durdurulamayacağını belirten bir değer alır.

Container

öğesini IContainer içeren öğesini Componentalır.

(Devralındığı yer: Component)
DependentServices

Bu ServiceController örnekle ilişkilendirilmiş hizmete bağlı hizmet kümesini alır.

DesignMode

öğesinin şu anda tasarım modunda olup olmadığını Component gösteren bir değer alır.

(Devralındığı yer: Component)
DisplayName

Hizmet için kolay bir ad alır veya ayarlar.

Events

Bu Componentöğesine eklenen olay işleyicilerinin listesini alır.

(Devralındığı yer: Component)
MachineName

Bu hizmetin bulunduğu bilgisayarın adını alır veya ayarlar.

ServiceHandle

Hizmetin tanıtıcısını alır.

ServiceName

Bu örneğin başvurduğunu hizmeti tanımlayan adı alır veya ayarlar.

ServicesDependedOn

Bu hizmetin bağımlı olduğu hizmet kümesi.

ServiceType

Bu nesnenin başvurduğunu hizmet türünü alır.

Site

öğesini alır veya ayarlar ISiteComponent.

(Devralındığı yer: Component)
StartType

Nesneyle ServiceController temsil edilen hizmetin nasıl başlatıldığını gösteren bir değer alır.

Status

Bu örnek tarafından başvuruda bulunan hizmetin durumunu alır.

Yöntemler

Close()

Bu ServiceController örneğin hizmetle bağlantısını keser ve örneğin ayırmış olduğu tüm kaynakları serbest kaldırır.

Continue()

Bir hizmet duraklatıldıktan sonra devam eder.

CreateObjRef(Type)

Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur.

(Devralındığı yer: MarshalByRefObject)
Dispose()

Uygulama tarafından tanımlanan, yönetilmeyen kaynakları serbest bırakma, salma veya sıfırlama ile ilişkili görevleri gerçekleştirir.

Dispose()

Component tarafından kullanılan tüm kaynakları serbest bırakır.

(Devralındığı yer: Component)
Dispose(Boolean)

ServiceController tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
ExecuteCommand(Int32)

Hizmette özel bir komut yürütür.

GetDevices()

Yerel bilgisayardaki cihaz sürücü hizmetlerini alır.

GetDevices(String)

Belirtilen bilgisayardaki cihaz sürücü hizmetlerini alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetLifetimeService()
Geçersiz.

Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır.

(Devralındığı yer: MarshalByRefObject)
GetService(Type)

veya tarafından ComponentContainersağlanan bir hizmeti temsil eden bir nesnesi döndürür.

(Devralındığı yer: Component)
GetServices()

Cihaz sürücü hizmetleri dışında yerel bilgisayardaki tüm hizmetleri alır.

GetServices(String)

Cihaz sürücü hizmetleri dışında belirtilen bilgisayardaki tüm hizmetleri alır.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
InitializeLifetimeService()
Geçersiz.

Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır.

(Devralındığı yer: MarshalByRefObject)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
MemberwiseClone(Boolean)

Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur.

(Devralındığı yer: MarshalByRefObject)
Pause()

Bir hizmetin işlemini askıya alır.

Refresh()

Özellikleri geçerli değerlerine sıfırlayarak özellik değerlerini yeniler.

Start()

Bağımsız değişken geçirmeden hizmeti başlatır.

Start(String[])

Belirtilen bağımsız değişkenleri geçirerek bir hizmet başlatır.

Stop()

Bu hizmeti ve bu hizmete bağımlı olan tüm hizmetleri durdurur.

Stop(Boolean)

Hizmeti ve isteğe bağlı olarak bu hizmete bağımlı olan tüm hizmetleri durdurur.

ToString()

Varsa, adını Componentiçeren bir String döndürür. Bu yöntem geçersiz kılınmamalıdır.

(Devralındığı yer: Component)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
WaitForStatus(ServiceControllerStatus)

Hizmetin belirtilen duruma ulaşmasını sonsuz olarak bekler.

WaitForStatus(ServiceControllerStatus, TimeSpan)

Hizmetin belirtilen duruma ulaşmasını veya belirtilen zaman aşımının süresinin dolmasını bekler.

Ekinlikler

Disposed

Bileşen yöntemine Dispose() yapılan bir çağrı tarafından atıldığında gerçekleşir.

(Devralındığı yer: Component)

Şunlara uygulanır

Ayrıca bkz.