Bagikan melalui


ServiceController Kelas

Definisi

Mewakili layanan Windows dan memungkinkan Anda menyambungkan ke layanan yang sedang berjalan atau berhenti, memanipulasinya, atau mendapatkan informasi tentang layanan tersebut.

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
Warisan
ServiceController
Warisan
ServiceController
Atribut
Penerapan

Contoh

Contoh berikut menunjukkan penggunaan ServiceController kelas untuk mengontrol SimpleService contoh layanan.

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

Keterangan

Anda dapat menggunakan ServiceController kelas untuk menyambungkan dan mengontrol perilaku layanan yang ada. Saat Anda membuat instans ServiceController kelas, Anda mengatur propertinya sehingga berinteraksi dengan layanan Windows tertentu. Anda kemudian dapat menggunakan kelas untuk memulai, menghentikan, dan memanipulasi layanan.

Anda kemungkinan besar akan menggunakan ServiceController komponen dalam kapasitas administratif. Misalnya, Anda dapat membuat aplikasi Windows atau Web yang mengirim perintah kustom ke layanan melalui ServiceController instans. Ini akan berguna, karena snap-in Konsol Manajemen Microsoft Service Control Manager (SCM) tidak mendukung perintah kustom.

Setelah membuat instans ServiceController, Anda harus mengatur dua properti di dalamnya untuk mengidentifikasi layanan yang berinteraksi dengannya: nama komputer dan nama layanan yang ingin Anda kontrol.

Nota

Secara default, MachineName diatur ke komputer lokal, jadi Anda tidak perlu mengubahnya kecuali Anda ingin mengatur instans untuk menunjuk ke komputer lain.

Umumnya, penulis layanan menulis kode yang menyesuaikan tindakan yang terkait dengan perintah tertentu. Misalnya, layanan dapat berisi kode untuk merespons ServiceBase.OnPause perintah. Dalam hal ini, pemrosesan kustom untuk Pause tugas berjalan sebelum sistem menjeda layanan.

Set perintah yang dapat diproses layanan tergantung pada propertinya; misalnya, Anda dapat mengatur CanStop properti untuk layanan ke false. Pengaturan ini membuat Stop perintah tidak tersedia pada layanan tertentu; ini mencegah Anda menghentikan layanan dari SCM dengan menonaktifkan tombol yang diperlukan. Jika Anda mencoba menghentikan layanan dari kode Anda, sistem akan menimbulkan kesalahan dan menampilkan pesan kesalahan "Gagal berhenti servicename."

Konstruktor

Nama Deskripsi
ServiceController()

Menginisialisasi instans ServiceController baru kelas yang tidak terkait dengan layanan tertentu.

ServiceController(String, String)

Menginisialisasi instans ServiceController baru kelas yang terkait dengan layanan yang ada pada komputer yang ditentukan.

ServiceController(String)

Menginisialisasi instans ServiceController baru kelas yang terkait dengan layanan yang ada di komputer lokal.

Properti

Nama Deskripsi
CanPauseAndContinue

Mendapatkan nilai yang menunjukkan apakah layanan dapat dijeda dan dilanjutkan.

CanRaiseEvents

Mendapatkan nilai yang menunjukkan apakah komponen dapat menaikkan peristiwa.

(Diperoleh dari Component)
CanShutdown

Mendapatkan nilai yang menunjukkan apakah layanan harus diberi tahu ketika sistem dimatikan.

CanStop

Mendapatkan nilai yang menunjukkan apakah layanan dapat dihentikan setelah dimulai.

Container

IContainer Mendapatkan yang berisi Component.

(Diperoleh dari Component)
DependentServices

Mendapatkan serangkaian layanan yang bergantung pada layanan yang terkait dengan instans ini ServiceController .

DesignMode

Mendapatkan nilai yang menunjukkan apakah Component saat ini dalam mode desain.

(Diperoleh dari Component)
DisplayName

Mendapatkan atau menetapkan nama yang mudah diingat untuk layanan.

Events

Mendapatkan daftar penanganan aktivitas yang dilampirkan ke ini Component.

(Diperoleh dari Component)
MachineName

Mendapatkan atau menyetel nama komputer tempat layanan ini berada.

ServiceHandle

Mendapatkan handel untuk layanan.

ServiceName

Mendapatkan atau mengatur nama yang mengidentifikasi layanan yang dirujuk instans ini.

ServicesDependedOn

Kumpulan layanan yang bergantung pada layanan ini.

ServiceType

Mendapatkan jenis layanan yang dirujuk objek ini.

Site

Mendapatkan atau mengatur ISite dari Component.

(Diperoleh dari Component)
StartType

Mendapatkan nilai yang menunjukkan bagaimana layanan yang diwakili oleh ServiceController objek dimulai.

Status

Mendapatkan status layanan yang dirujuk oleh instans ini.

Metode

Nama Deskripsi
Close()

Memutuskan sambungan instans ini ServiceController dari layanan dan membebaskan semua sumber daya yang dialokasikan instans.

Continue()

Melanjutkan layanan setelah dijeda.

CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
Dispose()

Melakukan tugas yang ditentukan aplikasi yang terkait dengan membebaskan, merilis, atau mengatur ulang sumber daya yang tidak dikelola.

Dispose()

Merilis semua sumber daya yang Componentdigunakan oleh .

(Diperoleh dari Component)
Dispose(Boolean)

Merilis sumber daya yang tidak dikelola yang ServiceController digunakan oleh dan secara opsional merilis sumber daya terkelola.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
ExecuteCommand(Int32)

Menjalankan perintah kustom pada layanan.

GetDevices()

Mengambil layanan pengandar perangkat pada komputer lokal.

GetDevices(String)

Mengambil layanan pengandar perangkat pada komputer yang ditentukan.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetService(Type)

Mengembalikan objek yang mewakili layanan yang disediakan oleh Component atau oleh Container.

(Diperoleh dari Component)
GetServices()

Mengambil semua layanan pada komputer lokal, kecuali untuk layanan pengandar perangkat.

GetServices(String)

Mengambil semua layanan pada komputer yang ditentukan, kecuali untuk layanan pengandar perangkat.

GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
Pause()

Menangguhkan operasi layanan.

Refresh()

Merefresh nilai properti dengan mereset properti ke nilainya saat ini.

Start()

Memulai layanan, tidak meneruskan argumen.

Start(String[])

Memulai layanan, meneruskan argumen yang ditentukan.

Stop()

Menghentikan layanan ini dan layanan apa pun yang bergantung pada layanan ini.

Stop(Boolean)

Menghentikan layanan dan secara opsional layanan apa pun yang bergantung pada layanan ini.

ToString()

Mengembalikan yang String berisi nama Component, jika ada. Metode ini tidak boleh ditimpa.

(Diperoleh dari Component)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
WaitForStatus(ServiceControllerStatus, TimeSpan)

Menunggu layanan mencapai status yang ditentukan atau waktu habis yang ditentukan kedaluwarsa.

WaitForStatus(ServiceControllerStatus)

Tak terbatas menunggu layanan mencapai status yang ditentukan.

Acara

Nama Deskripsi
Disposed

Terjadi ketika komponen dibuang oleh panggilan ke Dispose() metode .

(Diperoleh dari Component)

Berlaku untuk

Lihat juga