EXE als Service

07/06/2008 - 14:16 von Thomas Kehl | Report spam
Hallo.
Ich habe eine Applikation, die als EXE gestartet und verwendet werde soll.
Nun muss ich diese erweitern, damit ich diese auch als Dienst starten kann.
D.h. es kommt dann keine Benutzeroberflàche, sondern es soll zu bestimmten
Zeitpunkten eine Methode einer Klasse ausgeführt werden. Ich habe nun die
Applikation so erweitert, damit ich über einen Start-Parameter steuern kann,
ob die Benutzeroberflàche angezeigt werden soll oder nicht. Nun stellt sich
mir die Frage, wie ich es hinkriege, die Applikation als Dienst zu
registrieren und zu starten. Zudem sollte sich die Applikation natürlich
auch beenden (auf dem "sauberen Weg" - d.h. nicht gekillt werden), wenn der
Dienst beendet wird. Kann mir vielleicht jemand einen Ansatz nennen, wie ich
die Sache mit dem Dienst hinkriege? Hat mir evt. auch jemand einen Tipp, wie
ich dann, wenn die EXE als Dienst làuft die Erforderniss am besten umsetzen
kann, dass zu einer bestimmten Zeit eine Methode einer Klasse ausgeführt
wird? (Der Zeitpunkt soll sein z.B. "jeden Wochentag abends um 20.00).

Besten Dank im Voraus für eure Hilfe.

Beste Grüsse, Thomas
 

Lesen sie die antworten

#1 Holger Boskugel
07/06/2008 - 14:34 | Warnen spam
Hallo Thomas

dazu benötigst Du

System.ServiceProcess.ServiceBase
System.ServiceProcess.ServiceInstaller und
System.ServiceProcess.ServiceProcessInstaller

optional

System.ServiceProcess.ServiceController



Die Installer-Klasse muß glaub von

System.Configuration.Install.Installer

geerbt werden und das

System.ComponentModel.RunInstallerAttribute

bekommen, damit "InstallUtil" den Service
installieren kann.



Iinstanzen von
System.ServiceProcess.ServiceInstaller und
System.ServiceProcess.ServiceProcessInstaller
benötigt deine Installer-Klasse

und Dein Service erbt die
System.ServiceProcess.ServiceBase


Damit solltest Du alles notwedige haben (hab
selbst meine eigenen Service-Projekte gerade
nicht zur Hand).

Mit allen oben aufgeführten Klassen làßt sich
z.b. auch ein voll integrierter Service bauen :

- der Service selbst
- integrierte GUI-Installation, Management und
Lauf als Applikation
- integrierte Shell-Installation und Management

Solche Applikationen basieren bei mit auf deinem
Windows-Applikations-Projekt (GUI und Shell
stehen damit zur Verfügung).

Einzige zu beachtende Besonderheit (bisher) sind
Timer. Der GUI.-Timer (Windows.Forms ...)
kann nicht benutzt werden. An dessen Stelle
verwende ich den Timer aus dem ComponentModel.

Den Rest zum Service und ggf. Invoke findest Du
bequem im Netz.


Viele Grüße

Holger



"Thomas Kehl" <t.kehl (at) heeb.com> schrieb im Newsbeitrag
news:
Hallo.
Ich habe eine Applikation, die als EXE gestartet und verwendet werde soll.
Nun muss ich diese erweitern, damit ich diese auch als Dienst starten


kann.
D.h. es kommt dann keine Benutzeroberflàche, sondern es soll zu bestimmten
Zeitpunkten eine Methode einer Klasse ausgeführt werden. Ich habe nun die
Applikation so erweitert, damit ich über einen Start-Parameter steuern


kann,
ob die Benutzeroberflàche angezeigt werden soll oder nicht. Nun stellt


sich
mir die Frage, wie ich es hinkriege, die Applikation als Dienst zu
registrieren und zu starten. Zudem sollte sich die Applikation natürlich
auch beenden (auf dem "sauberen Weg" - d.h. nicht gekillt werden), wenn


der
Dienst beendet wird. Kann mir vielleicht jemand einen Ansatz nennen, wie


ich
die Sache mit dem Dienst hinkriege? Hat mir evt. auch jemand einen Tipp,


wie
ich dann, wenn die EXE als Dienst làuft die Erforderniss am besten


umsetzen
kann, dass zu einer bestimmten Zeit eine Methode einer Klasse ausgeführt
wird? (Der Zeitpunkt soll sein z.B. "jeden Wochentag abends um 20.00).

Besten Dank im Voraus für eure Hilfe.

Beste Grüsse, Thomas

Ähnliche fragen