ServiceBase Kelas

Definisi

Menyediakan kelas dasar untuk layanan yang akan ada sebagai bagian dari aplikasi layanan. ServiceBase harus berasal dari saat membuat kelas layanan baru.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
Warisan
Turunan

Keterangan

Berasal dari ServiceBase saat menentukan kelas layanan Anda dalam aplikasi layanan. Setiap layanan yang berguna mengambil alih OnStart metode dan OnStop . Untuk fungsionalitas tambahan, Anda dapat mengambil OnPause alih dan OnContinue dengan perilaku tertentu sebagai respons terhadap perubahan status layanan.

Layanan adalah executable jangka panjang yang tidak mendukung antarmuka pengguna, dan yang mungkin tidak berjalan di bawah akun pengguna yang masuk. Layanan dapat berjalan tanpa ada pengguna yang masuk ke komputer.

Secara default, layanan berjalan di bawah akun Sistem, yang tidak sama dengan akun Administrator. Anda tidak dapat mengubah hak akun Sistem. Atau, Anda dapat menggunakan ServiceProcessInstaller untuk menentukan akun pengguna tempat layanan akan berjalan.

Executable dapat berisi lebih dari satu layanan tetapi harus berisi terpisah ServiceInstaller untuk setiap layanan. Instans ServiceInstaller mendaftarkan layanan dengan sistem. Alat penginstal juga mengaitkan setiap layanan dengan log peristiwa yang dapat Anda gunakan untuk merekam perintah layanan. Fungsi main() dalam executable menentukan layanan mana yang harus dijalankan. Direktori kerja layanan saat ini adalah direktori sistem, bukan direktori tempat executable berada.

Saat Anda memulai layanan, sistem menemukan executable dan menjalankan metode untuk layanan tersebut OnStart , yang terkandung dalam executable. Namun, menjalankan layanan tidak sama dengan menjalankan executable. Executable hanya memuat layanan. Layanan ini diakses (misalnya, dimulai dan dihentikan) melalui Service Control Manager.

Executable memanggil ServiceBase konstruktor kelas turunan saat pertama kali Anda memanggil Mulai pada layanan. Metode OnStart penanganan perintah dipanggil segera setelah konstruktor dijalankan. Konstruktor tidak dijalankan lagi setelah pertama kali layanan dimuat, sehingga perlu untuk memisahkan pemrosesan yang dilakukan oleh konstruktor dari yang dilakukan oleh OnStart. Sumber daya apa pun yang dapat dirilis OnStop harus dibuat di OnStart. Membuat sumber daya di konstruktor mencegahnya dibuat dengan benar jika layanan dimulai lagi setelah OnStop merilis sumber daya.

Service Control Manager (SCM) menyediakan cara untuk berinteraksi dengan layanan. Anda dapat menggunakan SCM untuk meneruskan perintah Mulai, Hentikan, Jeda, Lanjutkan, atau kustom ke dalam layanan. SCM menggunakan nilai CanStop dan CanPauseAndContinue untuk menentukan apakah layanan menerima perintah Hentikan, Jeda, atau Lanjutkan. Hentikan, Jeda, dan Lanjutkan diaktifkan di menu konteks SCM hanya jika properti CanStop yang sesuai atau CanPauseAndContinue berada true di kelas layanan. Jika diaktifkan, perintah diteruskan ke layanan, dan OnStop, OnPause, atau OnContinue dipanggil. Jika CanStop, , CanShutdownatau CanPauseAndContinue adalah false, metode penanganan perintah yang sesuai (seperti OnStop) tidak akan diproses, bahkan jika Anda telah menerapkan metode .

Anda dapat menggunakan ServiceController kelas untuk melakukan apa yang dilakukan SCM secara terprogram menggunakan antarmuka pengguna. Anda dapat mengotomatiskan tugas yang tersedia di konsol. Jika CanStop, CanShutdown, atau CanPauseAndContinue tetapi true Anda belum menerapkan metode penanganan perintah yang sesuai (seperti OnStop) sistem melemparkan pengecualian dan mengabaikan perintah.

Anda tidak perlu menerapkan OnStart, , OnStopatau metode lain di ServiceBase. Namun, perilaku layanan dijelaskan dalam OnStart, jadi setidaknya, anggota ini harus ditimpa. Fungsi main() executable mendaftarkan layanan dalam executable dengan Service Control Manager dengan memanggil Run metode . Properti ServiceName objek yang ServiceBase diteruskan ke Run metode harus cocok dengan ServiceName properti alat penginstal layanan untuk layanan tersebut.

Anda dapat menggunakan InstallUtil.exe untuk menginstal layanan pada sistem Anda.

Catatan

Anda dapat menentukan log selain log peristiwa Aplikasi untuk menerima pemberitahuan panggilan layanan, tetapi properti maupun EventLog properti tidak AutoLog dapat menulis ke log kustom. Atur AutoLog ke false jika Anda tidak ingin menggunakan pengelogan otomatis.

Konstruktor

ServiceBase()

Membuat instans ServiceBase baru kelas .

Bidang

MaxNameLength

Menunjukkan ukuran maksimum untuk nama layanan.

Properti

AutoLog

Menunjukkan apakah akan melaporkan perintah Mulai, Hentikan, Jeda, dan Lanjutkan di log peristiwa.

CanHandlePowerEvent

Mendapatkan atau menetapkan nilai yang menunjukkan apakah layanan dapat menangani pemberitahuan tentang perubahan status daya komputer.

CanHandleSessionChangeEvent

Mendapatkan atau menetapkan nilai yang menunjukkan apakah layanan dapat menangani peristiwa perubahan sesi yang diterima dari sesi Server Terminal.

CanPauseAndContinue

Mendapatkan atau menetapkan nilai yang menunjukkan apakah layanan dapat dijeda dan dilanjutkan.

CanRaiseEvents

Mendapatkan nilai yang menunjukkan apakah komponen dapat menaikkan peristiwa.

(Diperoleh dari Component)
CanShutdown

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

CanStop

Mendapatkan atau menetapkan nilai yang menunjukkan apakah layanan dapat dihentikan setelah dimulai.

Container

IContainer Mendapatkan yang berisi Component.

(Diperoleh dari Component)
DesignMode

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

(Diperoleh dari Component)
EventLog

Mendapatkan log peristiwa yang dapat Anda gunakan untuk menulis pemberitahuan panggilan perintah layanan, seperti Mulai dan Berhenti, ke log peristiwa Aplikasi.

Events

Mendapatkan daftar penanganan aktivitas yang dilampirkan ke ini Component.

(Diperoleh dari Component)
ExitCode

Mendapatkan atau mengatur kode keluar untuk layanan.

ServiceHandle

Mendapatkan handel kontrol layanan untuk layanan.

ServiceName

Mendapatkan atau mengatur nama pendek yang digunakan untuk mengidentifikasi layanan ke sistem.

Site

Mendapatkan atau mengatur ISite dari Component.

(Diperoleh dari Component)

Metode

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()

Merilis semua sumber daya yang Componentdigunakan oleh .

(Diperoleh dari Component)
Dispose(Boolean)

Membuang sumber daya (selain memori) yang digunakan oleh ServiceBase.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
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)
GetType()

Mendapatkan dari instans Type 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 saat ini Object.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
OnContinue()

Saat diimplementasikan di kelas turunan, OnContinue() berjalan ketika perintah Lanjutkan dikirim ke layanan oleh Service Control Manager (SCM). Menentukan tindakan yang harus diambil saat layanan melanjutkan fungsi normal setelah dijeda.

OnCustomCommand(Int32)

Saat diimplementasikan di kelas turunan, OnCustomCommand(Int32) dijalankan ketika Service Control Manager (SCM) meneruskan perintah kustom ke layanan. Menentukan tindakan yang akan diambil ketika perintah dengan nilai parameter yang ditentukan terjadi.

OnPause()

Saat diimplementasikan di kelas turunan, dijalankan saat perintah Jeda dikirim ke layanan oleh Service Control Manager (SCM). Menentukan tindakan yang akan diambil saat layanan dijeda.

OnPowerEvent(PowerBroadcastStatus)

Ketika diimplementasikan di kelas turunan, dijalankan ketika status daya komputer telah berubah. Ini berlaku untuk komputer laptop ketika mereka masuk ke mode ditangguhkan, yang tidak sama dengan pematian sistem.

OnSessionChange(SessionChangeDescription)

Dijalankan saat peristiwa perubahan diterima dari sesi Server Terminal.

OnShutdown()

Ketika diimplementasikan di kelas turunan, dijalankan saat sistem dimatikan. Menentukan apa yang harus segera terjadi sebelum sistem dimatikan.

OnStart(String[])

Saat diimplementasikan di kelas turunan, dijalankan ketika perintah Mulai dikirim ke layanan oleh Service Control Manager (SCM) atau ketika sistem operasi dimulai (untuk layanan yang dimulai secara otomatis). Menentukan tindakan yang akan diambil saat layanan dimulai.

OnStop()

Saat diimplementasikan di kelas turunan, dijalankan saat perintah Hentikan dikirim ke layanan oleh Service Control Manager (SCM). Menentukan tindakan yang harus diambil ketika layanan berhenti berjalan.

RequestAdditionalTime(Int32)

Meminta waktu tambahan untuk operasi yang tertunda.

RequestAdditionalTime(TimeSpan)

Ketika metode ini dipanggil dari OnStart, OnStop, OnPause, atau OnContinue, petunjuk tunggu yang ditentukan diteruskan ke Manajer Kontrol Layanan untuk menghindari layanan ditandai sebagai tidak merespons.

Run(ServiceBase)

Mendaftarkan executable untuk layanan dengan Service Control Manager (SCM).

Run(ServiceBase[])

Mendaftarkan executable untuk beberapa layanan dengan Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr)

Mendaftarkan handler perintah dan memulai layanan.

Stop()

Menghentikan layanan eksekusi.

ToString()

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

(Diperoleh dari Component)

Acara

Disposed

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

(Diperoleh dari Component)

Berlaku untuk

Lihat juga