T-20: Die Restart-And-Recovery-API
Nur noch 20 Tage bis zum Windows 7 Launch. Meine Programme stürzen nicht ab! Nein ganz bestimmt nicht! Versprochen! Großes Indianer-Ehrenwort! Aber falls es doch mal passiert, dass eine Anwendung „abstürzt“, bzw. einfach nicht das tut, was man von ihr erwartet, dann kann man das jetzt stilvoll und mit einem automatischen Neustart der Anwendung geschehen lassen. Hierbei hilft die Restart-And-Recovery-API, die bereits in Windows Vista eingeführt und nun in Windows 7 erweitert wurde. Jeder von uns war bestimmt schon einmal in der Situation, dass er lange an einem Dokument gearbeitet hat bis die Anwendung plötzlich einfach abgestürzt ist. Die Anwendung reagiert einfach nicht mehr und alle Daten sind verloren. Vielleicht haben sie es auch schon einmal gesehen, dass einige Anwendungen nach einem Absturz anbieten, direkt wieder neu zu starten. Und im Startvorgang werden dann die verloren geglaubten Daten wiederhergestellt. Benutzer solcher Anwendungen können sich glücklich schätzen.
Die Anwendung läuft noch ….
Ups, die Anwendung funktioniert nicht mehr.
Und startet sich von selbst neu.
Eine quasi sich selbst regenerierende Anwendung kann jeder mit Hilfe der Restart-And-Recovery-API erstellen. Es sind nur wenige Schritte dazu notwendig: Schritt 1: Registrieren der Anwendung für einen Restart
private void RegisterForRestart() Schritt 2: Registrieren der Anwendung für die Wiederherstellung von Daten
private void RegisterForRecovery() Schritt 3: Implementieren der Recovery-Methode
private int RecoveryProcedure(object state) File.WriteAllText(RecoveryFile, string.Format("{1}{0}{2}{0}{3}", DataSeparatorString, CurrentFile.Filename, CurrentFile.IsDirty, CurrentFile.Contents));
Debug.WriteLine("File path: " + RecoveryFile);
ApplicationRestartRecoveryManager.ApplicationRecoveryFinished(true); Schritt 4: Prüfen, ob der Benutzer den Restart abgebrochen hat
private void PingSystem()
if (isCanceled) Schritt 5: Daten beim Neustart wiederherstellen
private void RecoverLastSession(string command)
// Perform application state restoration actions here.
// Load our textbox
// Update the title
// Reset our variable so next title updates we don’t show the "recovered" text Schritt 0: Die eigentliche Anwendung
public Form1()
if (System.Environment.GetCommandLineArgs().Length > 1 && System.Environment.GetCommandLineArgs()[1] == "/restart") Das vollständige Codebeispiel befindet sich im Windows API Code Pack. Video des Tages |