From b9838da76bb6167f01475d8b456fca4ba1c17b3b Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Sun, 13 Oct 2024 21:45:12 +0200 Subject: [PATCH] [#57] AreaComAdminWindow: Use Task.Run() --- Elwig/Services/AreaComService.cs | 16 ++++++++++++++-- Elwig/Windows/AreaComAdminWindow.xaml.cs | 14 +++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/Elwig/Services/AreaComService.cs b/Elwig/Services/AreaComService.cs index 86eb4e9..c0d3853 100644 --- a/Elwig/Services/AreaComService.cs +++ b/Elwig/Services/AreaComService.cs @@ -108,7 +108,8 @@ namespace Elwig.Services { public static async Task UpdateAreaCommitment(this AreaComAdminViewModel vm, int? oldFbNr) { int newFbNr = (int)vm.FbNr!; - using (var ctx = new AppDbContext()) { + await Task.Run(async () => { + using var ctx = new AppDbContext(); var a = new AreaCom { FbNr = oldFbNr ?? newFbNr, MgNr = (int)vm.MgNr!, @@ -140,7 +141,7 @@ namespace Elwig.Services { if (newFbNr != a.FbNr) { await ctx.Database.ExecuteSqlAsync($"UPDATE area_commitment SET fbnr = {newFbNr} WHERE fbnr = {oldFbNr}"); } - } + }); App.HintContextChange(); @@ -253,5 +254,16 @@ namespace Elwig.Services { } return grid; } + + public static async Task DeleteAreaCom(int fbnr) { + await Task.Run(async () => { + using var ctx = new AppDbContext(); + var l = (await ctx.AreaCommitments.FindAsync(fbnr))!; + ctx.Remove(l); + await ctx.SaveChangesAsync(); + }); + + App.HintContextChange(); + } } } diff --git a/Elwig/Windows/AreaComAdminWindow.xaml.cs b/Elwig/Windows/AreaComAdminWindow.xaml.cs index 2b3c17f..f8b94b6 100644 --- a/Elwig/Windows/AreaComAdminWindow.xaml.cs +++ b/Elwig/Windows/AreaComAdminWindow.xaml.cs @@ -203,13 +203,9 @@ namespace Elwig.Windows { $"Soll die Flächenbindung {a.GstNr} ({a.Area} m²) wirklich unwiderruflich gelöscht werden?", "Flächenbindung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); if (r == MessageBoxResult.OK) { - Mouse.OverrideCursor = Cursors.AppStarting; + Mouse.OverrideCursor = Cursors.Wait; try { - using (var ctx = new AppDbContext()) { - ctx.Remove(a); - await ctx.SaveChangesAsync(); - } - App.HintContextChange(); + await AreaComService.DeleteAreaCom(a.FbNr); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; @@ -227,7 +223,7 @@ namespace Elwig.Windows { private async void AreaCommitmentSaveButton_Click(object? sender, RoutedEventArgs? evt) { AreaCommitmentSaveButton.IsEnabled = false; - Mouse.OverrideCursor = Cursors.AppStarting; + Mouse.OverrideCursor = Cursors.Wait; int fbnr; try { @@ -237,9 +233,8 @@ namespace Elwig.Windows { if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error); AreaCommitmentSaveButton.IsEnabled = true; - return; - } finally { Mouse.OverrideCursor = null; + return; } IsEditing = false; @@ -252,6 +247,7 @@ namespace Elwig.Windows { FinishInputFilling(); await RefreshList(); RefreshInputs(); + Mouse.OverrideCursor = null; ViewModel.SearchQuery = ""; ControlUtils.SelectItem(AreaCommitmentList, AreaCommitmentList.ItemsSource.Cast().Where(a => a.FbNr == fbnr).FirstOrDefault()); }