Gewusst wie: Programmgesteuertes Schreiben von Diensten
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.
Tipp
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
Erstellen Sie ein leeres Projekt und einen Verweis auf die notwendigen Namespaces, indem Sie die folgenden Schritte ausführen:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verweise, und klicken Sie dann auf Verweis hinzufügen.
Führen Sie auf der Registerkarte .NET Framework einen Bildlauf zu System.dll durch, und klicken Sie auf Auswählen.
Führen Sie einen Bildlauf zu System.ServiceProcess.dll durch, und klicken Sie auf Auswählen.
Klicken Sie auf OK.
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 { }
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; }
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()); }
Ü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. }
Ü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.
Fügen Sie die für die Dienstanwendung erforderlichen Installationsprogramme hinzu. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen von Installern zur Dienstanwendung.
Erstellen Sie das Projekt, indem Sie im Menü Erstellen den Befehl Projektmappe erstellen auswählen.
Tipp
Drücken Sie nicht F5, um das Projekt auszuführen. Dienstprojekte können auf diese Weise nicht ausgeführt werden.
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.
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