Dela via


Anvisningar: Skriva tjänster programmatiskt

Kommentar

Den här artikeln gäller inte för värdbaserade tjänster i .NET. Det senaste innehållet i Windows-tjänster med hjälp av Microsoft.Extensions.Hosting.BackgroundService och arbetstjänstmallen finns i:

Om du väljer att inte använda Windows Service-projektmallen kan du skriva egna tjänster genom att konfigurera arvselementen och andra infrastrukturelement själv. När du skapar en tjänst programmatiskt måste du utföra flera steg som mallen annars skulle hantera åt dig:

  • Du måste konfigurera tjänstklassen så att den ServiceBase ärver från klassen.

  • Du måste skapa en Main metod för tjänstprojektet som definierar vilka tjänster som ska köras och anropar Run metoden på dem.

  • Du måste åsidosätta procedurerna OnStart och OnStop och fylla i all kod som du vill att de ska köra.

Så här skriver du en tjänst programmatiskt

  1. Skapa ett tomt projekt och skapa en referens till de nödvändiga namnrymderna genom att följa dessa steg:

    1. Högerklicka noden Referenser i Solution Explorer och klicka på Lägg till referens.

    2. På fliken .NET Framework bläddrar du till System.dll och klickar på Välj.

    3. Rulla till System.ServiceProcess.dll och klicka på Välj.

    4. Klicka på OK.

  2. Lägg till en klass och konfigurera den att ärva från ServiceBase:

    public class UserService1 : ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. Lägg till följande kod för att konfigurera tjänstklassen:

    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. Skapa en Main metod för klassen och använd den för att definiera den tjänst som klassen ska innehålla. userService1 Är namnet på klassen:

    public static void Main()
    {
        ServiceBase.Run(new UserService1());
    }
    
    Shared Sub Main()
        System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    
  5. Åsidosätt OnStart metoden och definiera alla bearbetningar som du vill utföra när tjänsten startas.

    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. Åsidosätt andra metoder som du vill definiera anpassad bearbetning för och skriv kod för att fastställa vilka åtgärder tjänsten ska vidta i varje enskilt fall.

  7. Lägg till nödvändiga installationsprogram för tjänstprogrammet. Mer information finns i Så här lägger du till installationsprogram i ditt tjänstprogram.

  8. Skapa projektet genom att välja Skapa lösningmenyn Skapa .

    Kommentar

    Tryck inte på F5 för att köra projektet – du kan inte köra ett tjänstprojekt på det här sättet.

  9. Skapa ett konfigurationsprojekt och anpassade åtgärder för att installera tjänsten. Ett exempel finns i Genomgång: Skapa ett Windows-tjänstprogram i komponentdesignern.

  10. Installera tjänsten. Mer information finns i Så här: Installera och avinstallera tjänster.

Se även