Gewusst wie: Programmgesteuertes Schreiben von Diensten

Aktualisiert: November 2007

Wenn Sie nicht die Projektvorlage Windows-Dienst verwenden möchten, können Sie durch Einrichten der Vererbung und anderer Infrastrukturelemente eigene Dienste schreiben. Sobald Sie einen Dienst programmgesteuert erstellen, müssen sie mehrere Schritte ausführen, die andernfalls von der Vorlage behandelt würden:

  • Sie müssen die Dienstklasse einrichten, damit sie von der ServiceBase-Klasse erbt.

  • Sie müssen für das Dienstprojekt eine Main-Methode erstellen, von der die auszuführenden Dienste festgelegt werden. Des Weiteren muss von ihr die Run-Methode für die Dienste aufgerufen werden.

  • Sie müssen die OnStart-Prozedur und die OnStop-Prozedur überschreiben und den Code einfügen, den diese ausführen sollen.

    Hinweis:

    Die Vorlage Windows-Dienst und die entsprechenden Funktionen stehen in der Standard Edition von Visual Studio nicht zur Verfügung.

So schreiben Sie einen Dienst programmgesteuert

  1. Erstellen Sie ein leeres Projekt und einen Verweis auf die notwendigen Namespaces, indem Sie die folgenden Schritte ausführen:

    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verweise, und klicken Sie dann auf Verweis hinzufügen.

    2. Führen Sie auf der Registerkarte .NET Framework einen Bildlauf zu System.dll durch, und klicken Sie auf Auswählen.

    3. Führen Sie einen Bildlauf zu System.ServiceProcess.dll durch, und klicken Sie auf Auswählen.

    4. Klicken Sie auf OK.

  2. Fügen Sie eine Klasse hinzu, und konfigurieren Sie diese, damit sie von ServiceBase erbt:

    Public Class UserService1
       Inherits System.ServiceProcess.ServiceBase
    End Class
    
    public class UserService1 : System.ServiceProcess.ServiceBase  
    {
    }
    
    public class UserService1 extends System.ServiceProcess.ServiceBase
    {
    }
    
  3. Konfigurieren Sie die Dienstklasse, indem Sie folgenden Code hinzufügen:

    Public Sub New()
        Me.ServiceName = "MyService2"
        Me.CanStop = True
        Me.CanPauseAndContinue = True
        Me.AutoLog = True
    End Sub
    
     public UserService1() 
        {
            this.ServiceName = "MyService2";
            this.CanStop = true;
            this.CanPauseAndContinue = true;
            this.AutoLog = true;
        }
    
        public UserService1() 
        {
            this.set_ServiceName("MyService2");
            this.set_CanStop(true);
            this.set_CanPauseAndContinue(true);
            this.set_AutoLog(true);
        }
    
  4. Erstellen Sie für die Klasse eine Main-Methode, und verwenden Sie diese zum Definieren des Diensts, den diese Klasse enthält. userService1 ist der Name der Klasse:

    Shared Sub Main()
      System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    
     public static void Main()
        {
            System.ServiceProcess.ServiceBase.Run(new UserService1());
        }
    
        public static void main()
        {
            System.ServiceProcess.ServiceBase.Run(new UserService1());
        }
    
  5. Überschreiben Sie die OnStart-Methode, und definieren Sie die Verarbeitung beim Starten des Diensts.

    Protected Overrides Sub OnStart(ByVal args() As String)
      ' Insert code here to define processing.
    End Sub
    
     protected override void OnStart(string[] args)
        {
            // Insert code here to define processing.
        }
    
        protected void OnStart(System.String[] args)
        {
            // Insert code here to define processing.
        }
    
  6. Überschreiben sie alle anderen Methoden, für die Sie benutzerdefinierte Verarbeitung definieren möchten. Schreiben Sie Code, mit dem Sie bestimmen, welche Aktionen vom Dienst in den einzelnen Fällen ausgeführt werden sollen.

  7. Fügen Sie die für die Dienstanwendung erforderlichen Installationsprogramme hinzu. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen von Installern zur Dienstanwendung.

  8. Erstellen Sie das Projekt, indem Sie im Menü Erstellen den Befehl Projektmappe erstellen auswählen.

    Hinweis:

    Drücken Sie nicht F5, um das Projekt auszuführen. Dienstprojekte können auf diese Weise nicht ausgeführt werden.

  9. Erstellen Sie ein Setup-Projekt und die benutzerdefinierten Aktionen, um den Dienst zu installieren. Ein Beispiel finden Sie unter Exemplarische Vorgehensweise: Erstellen einer Windows-Dienstanwendung im Komponenten-Designer.

  10. Installieren Sie den Dienst. Weitere Informationen finden Sie unter Gewusst wie: Installieren und Deinstallieren von Diensten.

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Windows-Diensten

Gewusst wie: Hinzufügen von Installern zur Dienstanwendung

Gewusst wie: Protokollinformationen über Dienste

Exemplarische Vorgehensweise: Erstellen einer Windows-Dienstanwendung im Komponenten-Designer

Exemplarische Vorgehensweise: Erstellen einer benutzerdefinierten Aktion

Konzepte

Einführung in Windows-Dienstanwendungen

Setup-Projekte