Entwickler-Ecke

Basistechnologien - Windows Dienst und noch eine letzte Ausführung


BlackMatrix - Fr 13.08.10 03:10
Titel: Windows Dienst und noch eine letzte Ausführung
Hi.

Mein ganzes Programm ist ein Windows Dienst, bisher hat damit auch alles funktioniert.

Mein Programm hat mit dem Windowsstart begonnen und hat sich erst wieder beendet, wenn ich den Computer ausgeschalten habe oder ich den Prozess gekillt habe.

Das wollte ich auch so. Nun möchte ich aber, dass mein Dienst, eine letzte Tätigkeit ausführt bevor er beendet wird oder Windows heruntergefahren wird.

Was kann ich tun?

MfG


thepioneer - So 15.08.10 13:31

Hi BlackMatrix

Dein Dinest sollte eigentlich die beiden Methoden beinhalten:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
protected override void OnStart(string[] args)
{
    //Alles was beim Dienststart gemacht werden muss
}

protected override void OnStop()
{
    //Alles was beim Beeenden gemacht werden muss
}

In der OnStop Methode gibst du an was der Dienst noch zu erledigen hat bevor er sich beendet.
Die Methode OnStop wir dann aufgerufen sobald du dem Dienst den Befehl gibtst sich zu beenden.


Delete - So 15.08.10 13:39

Soe wird aber nicht aufgerufen, wenn der Dienst über den Taskmanager beendet wird.


thepioneer - So 15.08.10 15:37

Zitat:

Soe wird aber nicht aufgerufen, wenn der Dienst über den Taskmanager beendet wird.


Wenn über den Taskmanager unter "Dienste" der Dienst beendet wird, wird diese Methode aufgerufen.
Beendest du jedoch einfach den Prozess des Dienstes (Prozess beenden (killen)) dann ist es naheliegend, dass diese Methode nicht mehr aufgerufen werden kann.


Delete - So 15.08.10 18:21

Ich meinte logischerweise zweiteres.


thepioneer - So 15.08.10 18:28

@Luckie

ich gehe davon aus, dass BlackMatrix eine Möglichkeit sucht für reguläres Beenden. Wenn nicht wird er sich bestimmt noch zu Wort melden.
Das andere liegt ja klar auf der Hand dass das aus dem gleichen Dienst nicht geht.

@BlackMatrix:
Solltest du eine Möglichkeit suchen wenn dein Dienst gekillt wird, würde ich das ggf. mit einem separaten Dienst bewerkstelligen welcher prüft ob dein erster Dienst noch läuft. Sollte das nicht mehr der Fall sein, kann er ggf. diese letzte Aktion ausführen (in ein Logbuch schreiben oder so).


BlackMatrix - So 22.08.10 18:37

user profile iconthepioneer hat folgendes geschrieben Zum zitierten Posting springen:
@Luckie
@BlackMatrix:
Solltest du eine Möglichkeit suchen wenn dein Dienst gekillt wird, würde ich das ggf. mit einem separaten Dienst bewerkstelligen welcher prüft ob dein erster Dienst noch läuft. Sollte das nicht mehr der Fall sein, kann er ggf. diese letzte Aktion ausführen (in ein Logbuch schreiben oder so).


Konnte mich leider jetzt erst melden.

Genauso wie du das geschrieben hast, wollte ich das haben und danke für den Code :)