From 127cfd749ff2e894eff9d8528499aab150c99f1b Mon Sep 17 00:00:00 2001 From: Alexandru Macocian Date: Thu, 1 Apr 2021 14:19:16 +0200 Subject: [PATCH] Implemented application lifetime management. --- WpfExtended.Test/Launcher.cs | 8 ++++++++ WpfExtended/Launch/ExtendedApplication.cs | 25 +++++++++++++++++++++++ WpfExtended/WpfExtended.csproj | 2 +- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/WpfExtended.Test/Launcher.cs b/WpfExtended.Test/Launcher.cs index 76bcc0d..a28f084 100644 --- a/WpfExtended.Test/Launcher.cs +++ b/WpfExtended.Test/Launcher.cs @@ -15,6 +15,14 @@ namespace WpfExtended.Tests return Instance.Run(); } + protected override void ApplicationClosing() + { + } + + protected override void ApplicationStarting() + { + } + protected override bool HandleException(Exception e) { return false; diff --git a/WpfExtended/Launch/ExtendedApplication.cs b/WpfExtended/Launch/ExtendedApplication.cs index 586bf61..cf637ba 100644 --- a/WpfExtended/Launch/ExtendedApplication.cs +++ b/WpfExtended/Launch/ExtendedApplication.cs @@ -18,6 +18,14 @@ namespace System.Windows.Extensions this.RegisterInternals(); } + /// + /// Called right before the window is shown. + /// + protected abstract void ApplicationStarting(); + /// + /// Called right before the application is closing. + /// + protected abstract void ApplicationClosing(); /// /// Register services into the . /// @@ -34,12 +42,25 @@ namespace System.Windows.Extensions { this.SetupExceptionHandling(); this.RegisterServices(this.ServiceManager); + this.SetupApplicationLifetime(); this.LaunchWindow(); } + protected sealed override void OnExit(ExitEventArgs e) + { + base.OnExit(e); + this.ApplicationClosing(); + } + protected sealed override void OnSessionEnding(SessionEndingCancelEventArgs e) + { + base.OnSessionEnding(e); + this.ApplicationClosing(); + } + private void LaunchWindow() { var window = this.ServiceManager.GetService(); + this.ApplicationStarting(); window.Show(); } private void RegisterInternals() @@ -70,5 +91,9 @@ namespace System.Windows.Extensions } }; } + private void SetupApplicationLifetime() + { + AppDomain.CurrentDomain.ProcessExit += (s, e) => this.ApplicationClosing(); + } } } diff --git a/WpfExtended/WpfExtended.csproj b/WpfExtended/WpfExtended.csproj index 36875fd..a4aae2b 100644 --- a/WpfExtended/WpfExtended.csproj +++ b/WpfExtended/WpfExtended.csproj @@ -6,7 +6,7 @@ true true License.txt - 0.1 + 0.1.1 Extension library for Windows Presentation Platform. Credits: