diff --git a/AutoRecovery.sln b/AutoRecovery.sln index ebe4a49..20d722a 100644 --- a/AutoRecovery.sln +++ b/AutoRecovery.sln @@ -11,6 +11,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRecoverySupervisor", "A EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9B4EA8AC-F0D5-47AB-BD41-5EB9724299A5}" ProjectSection(SolutionItems) = preProject + .gitattributes = .gitattributes + .gitignore = .gitignore + LICENSE.txt = LICENSE.txt README.md = README.md EndProjectSection EndProject diff --git a/AutoRecovery/Abraham.AutoRecovery.csproj b/AutoRecovery/Abraham.AutoRecovery.csproj index 3d43d27..85533a9 100644 --- a/AutoRecovery/Abraham.AutoRecovery.csproj +++ b/AutoRecovery/Abraham.AutoRecovery.csproj @@ -19,9 +19,12 @@ and a supervisor process to automatically restart your app after a crash. Oliver Abraham Ciridata.png - False - 1.0.1 - Changed license to Apache 2.0 and added an icon + Included debug symbols + True + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + 1.0.2 + Oliver Abraham diff --git a/README.md b/README.md index 0ae058d..443b070 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,16 @@ # Abraham.AutoRecovery +![](https://img.shields.io/github/downloads/oliverabraham/AutoRecovery/total) ![](https://img.shields.io/github/license/oliverabraham/AutoRecovery) ![](https://img.shields.io/github/languages/count/oliverabraham/AutoRecovery) ![GitHub Repo stars](https://img.shields.io/github/stars/oliverabraham/AutoRecovery?label=repo%20stars) ![GitHub Repo stars](https://img.shields.io/github/stars/oliverabraham?label=user%20stars) + + +## OVERVIEW -## Abstract This library provides a scheduler for automatically saving user data and a supervisor process to automatically restart your app after a crash. -## License +## LICENSE Licensed under Apache licence. https://www.apache.org/licenses/LICENSE-2.0 @@ -15,7 +18,17 @@ https://www.apache.org/licenses/LICENSE-2.0 ## Compatibility -The nuget package was build with DotNET 6. +The nuget package was build with DotNET standard 2.0. + + +## Source code + +The source code is available on GitHub: +https://github.com/OliverAbraham/AutoRecovery + +The nuget package is available on nuget.org: +https://www.nuget.org/packages/Abraham.AutoRecovery/ + ## Example @@ -83,20 +96,20 @@ At startup of your app, add the following code. (You'll want to change startVisible to false after verifying it's working): ```C# - private void Window_Loaded(object sender, RoutedEventArgs e) - { - _autoRecovery.EnableAutoRestart(startVisible: true); // restart this app after crash, start visible for Demo only! - } +private void Window_Loaded(object sender, RoutedEventArgs e) +{ + _autoRecovery.EnableAutoRestart(startVisible: true); // restart this app after crash, start visible for Demo only! +} ``` At shutdown, add the following code: ```C# - private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) - { - _autoRecovery.NormalShutdown(); - } +private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) +{ + _autoRecovery.NormalShutdown(); +} ``` This call will end the hidden supervisor process. @@ -123,7 +136,7 @@ This is very simple: or from NuGet Command-Line: - Install-Package Abraham.ProgramSettingsManager + Install-Package Abraham.AutoRecovery @@ -137,3 +150,11 @@ Please feel free to comment and suggest improvements! + + +# MAKE A DONATION ! + +If you find this application useful, buy me a coffee! +I would appreciate a small donation on https://www.buymeacoffee.com/oliverabraham + +Buy Me A Coffee diff --git a/README.md.bak b/README.md.bak new file mode 100644 index 0000000..0ae058d --- /dev/null +++ b/README.md.bak @@ -0,0 +1,139 @@ +# Abraham.AutoRecovery + + +## Abstract + +This library provides a scheduler for automatically saving user data +and a supervisor process to automatically restart your app after a crash. + + +## License + +Licensed under Apache licence. +https://www.apache.org/licenses/LICENSE-2.0 + + +## Compatibility + +The nuget package was build with DotNET 6. + + +## Example + +For an example refer to project "AutoRecoveryDemoWPF". It demonstrates both features: +1. The scheduler that triggers a given function periodically to save the user's data. +2. When you app starts, a separate (hidden) process is started to monitor your app. + In case you app crashes and its process ends, the hidden process will restart + your app. If your process ends normally, the hidden process will also end. + + +## Getting started + +Add the Nuget package "Abraham.AutoRecovery" to your project. + +Add a field to your project: + +```C# + IAutoRecovery _autoRecovery = new AutoRecovery(); +``` + + + +### Adding AutoSave to your project + +At startup of your app, add the following code: + +```C# + private void Window_Loaded(object sender, RoutedEventArgs e) + { + if (_autoRecovery.AppHasCrashed) + LoadDataFromAutoSaveFile(); + else + LoadData(); + _autoRecovery.EnableAutoSave(10, SaveDataForAutoSave); // save every 10 seconds + } +``` + +This method will be called periodically to save the user's data: + +```C# + private void SaveDataForAutoSave() + { + Dispatcher.Invoke(() => { SaveDataToAutoSaveFile(); }); + } +``` + +At shutdown, add the following code: + +```C# + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + SaveData(); + DeleteAutoSaveFile(); // optional + } +``` + +After saving user's data as usual, you can add a method that deletes the file +containing the autosave data. + + +### Adding AutoRestart to your project + +At startup of your app, add the following code. +(You'll want to change startVisible to false after verifying it's working): + +```C# + private void Window_Loaded(object sender, RoutedEventArgs e) + { + _autoRecovery.EnableAutoRestart(startVisible: true); // restart this app after crash, start visible for Demo only! + } +``` + + +At shutdown, add the following code: + +```C# + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + _autoRecovery.NormalShutdown(); + } +``` + +This call will end the hidden supervisor process. + +### Testing AutoRestart + +- Start the demo app 'AutoRecoveryDemoWPF.exe' by doubleclicking. +- The go to task manager and end this process. +- Don't kill process tree! Only kill the single process. +- After a few seconds the supervisor process will recognize that and restart your process. + + + + +## HOW TO INSTALL A NUGET PACKAGE +This is very simple: +- Start Visual Studio (with NuGet installed) +- Right-click on your project's References and choose "Manage NuGet Packages..." +- Choose Online category from the left +- Enter the name of the nuget package to the top right search and hit enter +- Choose your package from search results and hit install +- Done! + + +or from NuGet Command-Line: + + Install-Package Abraham.ProgramSettingsManager + + + + + +## AUTHOR + +Oliver Abraham, mail@oliver-abraham.de, https://www.oliver-abraham.de + +Please feel free to comment and suggest improvements! + + +