Autor Beitrag
BlackMatrix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Fr 13.08.10 03:10 
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
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 15.08.10 13:31 
Hi BlackMatrix

Dein Dinest sollte eigentlich die beiden Methoden beinhalten:

ausblenden 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.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 15.08.10 13:39 
Soe wird aber nicht aufgerufen, wenn der Dienst über den Taskmanager beendet wird.
thepioneer
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 15.08.10 18:21 
Ich meinte logischerweise zweiteres.
thepioneer
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: 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 :)