c# Aktion bei Programm ende bzw. Windows beenden ausführen

Gast #2548930
Lesenswert?

Hallo,
ich möchte dass mein C#-Programm beim beenden von windows "nochmal kurz" 
alle Daten abspeichert.
Wie stelle ich das an?

beim herunterfahren beendet Windows ja alle laufenden Programme. Wie 
wird das herunterfahren aber den Programmen mitgeteilt?
Gibt es überhaupt eine Möglichkeit diesen "Herunterfahren-Befehl" in C# 
irgendwie zu erhashen um dann noch schnell eine Sicherung auszuführen?
#2548995
Lesenswert?

Ein paar Möglichkeiten wären u.a.
Windows-Forms: Form.FormClosing und dann in 
http://msdn.microsoft.com/de-de/library/system.windows.forms.closereason.aspx 
nachsehen (u.a. WindowsShutDown, TaskManagerClosing, UserClosing)
WPF: 
http://msdn.microsoft.com/en-us/library/system.windows.application.sessionending.aspx
http://msdn.microsoft.com/de-de/library/microsoft.win32.systemevents.sessionending.aspx

Wird mehr Zeit benötigt, um die Aktion zu beenden, war der Hinweis auf 
ServiceBase.OnShutdown richtig.
http://blogs.msdn.com/b/bclteam/archive/2009/02/19/in-depth-how-net-managed-services-interact-with-the-servicecontrolmanager-scm-kim-hamilton.aspx
"If your OnStop fails to call RequestAdditionalTime or blocks for longer 
than 20 (default; see below) seconds, SCM marks service as unresponsive.

To prevent a service from stopping shutdown, the SCM will only wait up 
to a limit for your service to stop itself. The default for this limit 
is 20 seconds (this value is in the registry key 
WaitToKillServiceTimeout() in 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control)"
Gast #2549022
Lesenswert?

Danke für die Tipps:

es hat nun folgender Maßen funktioniert:
1
Microsoft.Win32.SystemEvents.SessionEnding += new Microsoft.Win32.SessionEndingEventHandler(this.WinShutdown);
1
private void WinShutdown(object sender, Microsoft.Win32.SessionEndingEventArgs e)
2
{
3
     // mit e.Cancel = true; kann man den shutdown auch unterbinden
4
     v_SaveLog();
5
     Close();
6
}

Danke und Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren