Dienste programmieren mit .NET

Die Thread-Klasse vereinfacht die Arbeit

Einen Thread starten Sie, indem Sie einfach eine neue Instanz der Thread-Klasse erzeugen. Dazu brauchen Sie aber erst einmal ein ThreadStart-Objekt, das die Informationen über den zu startenden Thread beinhaltet. Die wichtigste Information ist die Adresse der Funktion, die als Eintrittspunkt in den Thread dienen soll. Das ThreadStart-Objekt ist ein so genannter Delegate mit einer ganz bestimmten Signatur, die die Thread-Funktion ebenfalls aufweisen muss. Die Signatur ist einfach: Die Funktion bekommt keine Parameter und hat keinen Rückgabewert. Im Beispielprogramm hat die Thread-Funktion den Namen "ComThread".

Ist das Thread-Objekt erzeugt, kann man den Thread starten lassen, indem man die Methode Start() des Objekts aufruft:

protected override void OnStart(string[] args)
{
thread = new Thread( new ThreadStart( this.ComThread));
thread.Start();
}

Um die etwas komplexen Zusammenhänge nochmals zu rekapitulieren: Die Methode OnStart() des Dienstprogramms wird vom Service Control Manager aufgerufen. Innerhalb dieser Methode wird ein neuer Thread gestartet, der den eigentlichen Dienst beinhaltet. Mit diesem können andere Programme von außen kommunizieren. Das Programm mit der OnStart()-Methode lässt sich zudem ausschließlich über den Service Control Manager ausführen, ein direkter Start ist nicht möglich. Schwere Kost - auch wenn der bisher geschriebene Quellcode gerade einmal drei Zeilen umfasst.