Udostępnij przez


Porady: programowane pisanie usług

Uwaga

Ten artykuł nie dotyczy hostowanych usług na platformie .NET. Aby uzyskać najnowszą zawartość w usługach systemu Windows przy użyciu Microsoft.Extensions.Hosting.BackgroundService i szablonie usługi procesu roboczego, zobacz:

Jeśli zdecydujesz się nie używać szablonu projektu Usługi systemu Windows, możesz napisać własne usługi, konfigurując dziedziczenie i inne elementy infrastruktury samodzielnie. Podczas programowego tworzenia usługi należy wykonać kilka kroków, które szablon w przeciwnym razie obsłuży:

  • Należy skonfigurować klasę usługi, aby dziedziczyła z ServiceBase klasy .

  • Musisz utworzyć metodę Main dla projektu usługi, która definiuje usługi do uruchamiania i wywołuje metodę Run na nich.

  • Należy zastąpić OnStart procedury i OnStop i wypełnić dowolny kod, który ma zostać uruchomiony.

Aby programowo napisać usługę

  1. Utwórz pusty projekt i utwórz odwołanie do niezbędnych przestrzeni nazw, wykonując następujące kroki:

    1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł Odwołania i kliknij polecenie Dodaj odwołanie.

    2. Na karcie .NET Framework przewiń do System.dll i kliknij pozycję Wybierz.

    3. Przewiń do System.ServiceProcess.dll i kliknij pozycję Wybierz.

    4. Kliknij przycisk OK.

  2. Dodaj klasę i skonfiguruj ją do dziedziczenia z ServiceBaseklasy :

    public class UserService1 : ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. Dodaj następujący kod, aby skonfigurować klasę usługi:

    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. Utwórz metodę Main dla klasy i użyj jej do zdefiniowania usługi, która będzie zawierać klasa; userService1 jest nazwą klasy:

    public static void Main()
    {
        ServiceBase.Run(new UserService1());
    }
    
    Shared Sub Main()
        System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    
  5. Zastąpij metodę i zdefiniuj wszelkie operacje przetwarzania, które chcesz wykonać po uruchomieniu OnStart usługi.

    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. Zastąpi wszelkie inne metody, dla których chcesz zdefiniować przetwarzanie niestandardowe, i napisz kod w celu określenia akcji, które usługa powinna wykonać w każdym przypadku.

  7. Dodanie niezbędnych instalatorów dla aplikacji usługi. Aby uzyskać więcej informacji, zobacz How to: Add Installers to Your Service Application (Instrukcje: dodawanie instalatorów do aplikacji usługi).

  8. Skompiluj projekt, wybierając pozycję Kompiluj rozwiązanie z menu Kompilacja .

    Uwaga

    Nie naciskaj klawisza F5, aby uruchomić projekt — w ten sposób nie można uruchomić projektu usługi.

  9. Utwórz projekt instalacyjny i akcje niestandardowe, aby zainstalować usługę. Aby zapoznać się z przykładem, zobacz Przewodnik: tworzenie aplikacji usługi systemu Windows w Projektant składników.

  10. Zainstaluj usługę. Aby uzyskać więcej informacji, zobacz Instrukcje: instalowanie i odinstalowywanie usług.

Zobacz też