Cara: Menulis Layanan Secara Terprogram

Catatan

Artikel ini tidak berlaku untuk layanan yang dihosting di .NET. Untuk konten terbaru tentang layanan Windows menggunakan Microsoft.Extensions.Hosting.BackgroundService dan templat Layanan Pekerja, lihat:

Jika Anda memilih untuk tidak menggunakan templat proyek Layanan Windows, Anda dapat menulis layanan Anda sendiri dengan mengatur elemen warisan dan infrastruktur lainnya sendiri. Saat Anda membuat layanan secara terprogram, Anda harus melakukan beberapa langkah yang seharusnya ditangani templat untuk Anda:

  • Anda harus mengatur kelas layanan untuk mewarisi dari kelas ServiceBase.

  • Anda harus membuat metode Main untuk proyek layanan Anda yang menentukan layanan yang akan dijalankan dan memanggil metode Run pada mereka.

  • Anda harus mengambil alih prosedur OnStart dan OnStop serta mengisi kode apa pun yang Anda inginkan untuk dijalankan.

Untuk menulis layanan secara terprogram

  1. Buat proyek kosong dan buat referensi ke ruang namespace yang diperlukan dengan mengikuti langkah-langkah berikut:

    1. Di Penjelajah Solusi, klik kanan simpul Referensi dan pilih Tambahkan Referensi.

    2. Pada tab .NET Framework, gulir ke System.dll dan klik Pilih.

    3. Gulir ke System.ServiceProcess.dll dan klik Pilih.

    4. Klik OK.

  2. Tambahkan kelas dan konfigurasikan untuk mewarisi dari ServiceBase:

    public class UserService1 : ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. Tambahkan kode berikut untuk mengonfigurasi kelas layanan Anda:

    public UserService1()
    {
        ServiceName = "MyService2";
        CanStop = true;
        CanPauseAndContinue = true;
        AutoLog = true;
    }
    
    Public Sub New()
        Me.ServiceName = "MyService2"
        Me.CanStop = True
        Me.CanPauseAndContinue = True
        Me.AutoLog = True
    End Sub
    
  4. Buat metode Main untuk kelas Anda, dan gunakan untuk menentukan layanan yang akan dimuat kelas Anda; userService1 adalah nama kelas:

    public static void Main()
    {
        ServiceBase.Run(new UserService1());
    }
    
    Shared Sub Main()
        System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    
  5. Ambil alih metode OnStart, dan tentukan pemrosesan apa pun yang ingin Anda lakukan saat layanan Anda dimulai.

    protected override void OnStart(string[] args)
    {
        // Insert code here to define processing.
    }
    
    Protected Overrides Sub OnStart(ByVal args() As String)
        ' Insert code here to define processing.
    End Sub
    
  6. Ambil alih metode lain yang ingin Anda definisikan pemrosesan kustom, dan tulis kode untuk menentukan tindakan yang harus diambil layanan dalam setiap kasus.

  7. Tambahkan alat penginstal yang diperlukan untuk aplikasi layanan Anda. Untuk informasi selengkapnya, lihat Cara: Menambahkan Alat Penginstal ke Aplikasi Layanan Anda.

  8. Buat proyek Anda dengan memilih Buat Solusi dari menu Buat.

    Catatan

    Jangan tekan F5 untuk menjalankan proyek Anda — Anda tidak dapat menjalankan proyek layanan dengan cara ini.

  9. Buat proyek pengaturan dan tindakan kustom untuk menginstal layanan Anda. Misalnya, lihat Panduan: Membuat Aplikasi Layanan Windows di Perancang Komponen.

  10. Instal layanan. Untuk informasi selengkapnya, lihat Cara: Menginstal dan Menghapus Instalan Layanan.

Lihat juga