From a2b900a64f3be35123457abebfe67388cb937151 Mon Sep 17 00:00:00 2001 From: Justin Swanson Date: Sat, 8 Aug 2020 07:33:36 -0500 Subject: [PATCH] Adjusted shutdown mechanics to not block GUI thread --- Wabbajack/View Models/Compilers/CompilerVM.cs | 6 +++--- Wabbajack/View Models/Installers/InstallerVM.cs | 6 +++--- Wabbajack/View Models/MainWindowVM.cs | 10 +++++----- Wabbajack/Views/MainWindow.xaml.cs | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Wabbajack/View Models/Compilers/CompilerVM.cs b/Wabbajack/View Models/Compilers/CompilerVM.cs index 84cc5d45..6ac4d3aa 100644 --- a/Wabbajack/View Models/Compilers/CompilerVM.cs +++ b/Wabbajack/View Models/Compilers/CompilerVM.cs @@ -212,12 +212,12 @@ namespace Wabbajack .QueryWhenChanged(query => query.FirstOrDefault()) .ToGuiProperty(this, nameof(ActiveGlobalUserIntervention)); - CloseWhenCompleteCommand = ReactiveCommand.Create( + CloseWhenCompleteCommand = ReactiveCommand.CreateFromTask( canExecute: this.WhenAny(x => x.Completed) .Select(x => x != null), - execute: () => + execute: async () => { - MWVM.ShutdownApplication(); + await MWVM.ShutdownApplication(); }); GoToCommand = ReactiveCommand.Create( diff --git a/Wabbajack/View Models/Installers/InstallerVM.cs b/Wabbajack/View Models/Installers/InstallerVM.cs index 36156d4d..9d4f1c34 100644 --- a/Wabbajack/View Models/Installers/InstallerVM.cs +++ b/Wabbajack/View Models/Installers/InstallerVM.cs @@ -412,12 +412,12 @@ namespace Wabbajack .QueryWhenChanged(query => query.FirstOrDefault()) .ToGuiProperty(this, nameof(ActiveGlobalUserIntervention)); - CloseWhenCompleteCommand = ReactiveCommand.Create( + CloseWhenCompleteCommand = ReactiveCommand.CreateFromTask( canExecute: this.WhenAny(x => x.Completed) .Select(x => x != null), - execute: () => + execute: async () => { - MWVM.ShutdownApplication(); + await MWVM.ShutdownApplication(); }); GoToInstallCommand = ReactiveCommand.Create( diff --git a/Wabbajack/View Models/MainWindowVM.cs b/Wabbajack/View Models/MainWindowVM.cs index 62f30a08..c453ffec 100644 --- a/Wabbajack/View Models/MainWindowVM.cs +++ b/Wabbajack/View Models/MainWindowVM.cs @@ -143,12 +143,12 @@ namespace Wabbajack .Select(active => !SettingsPane.IsValueCreated || !object.ReferenceEquals(active, SettingsPane.Value)), execute: () => NavigateTo(SettingsPane.Value)); - OpenTerminalCommand = ReactiveCommand.Create(() => OpenTerminal()); + OpenTerminalCommand = ReactiveCommand.CreateFromTask(() => OpenTerminal()); } - private void OpenTerminal() + private async Task OpenTerminal() { var process = new ProcessStartInfo { @@ -156,7 +156,7 @@ namespace Wabbajack WorkingDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) }; Process.Start(process); - ShutdownApplication(); + await ShutdownApplication(); } private static bool IsStartingFromModlist(out AbsolutePath modlistPath) @@ -193,14 +193,14 @@ namespace Wabbajack ActivePane = vm; } - public void ShutdownApplication() + public async Task ShutdownApplication() { Dispose(); Settings.PosX = MainWindow.Left; Settings.PosY = MainWindow.Top; Settings.Width = MainWindow.Width; Settings.Height = MainWindow.Height; - MainSettings.SaveSettings(Settings).AsTask().Wait(); + await MainSettings.SaveSettings(Settings); Application.Current.Shutdown(); } } diff --git a/Wabbajack/Views/MainWindow.xaml.cs b/Wabbajack/Views/MainWindow.xaml.cs index 9fe8fa9b..13591de1 100644 --- a/Wabbajack/Views/MainWindow.xaml.cs +++ b/Wabbajack/Views/MainWindow.xaml.cs @@ -162,7 +162,7 @@ namespace Wabbajack private void Window_Closing(object sender, CancelEventArgs e) { - _mwvm.ShutdownApplication(); + _mwvm.ShutdownApplication().Wait(); } } }