diff --git a/Elwig/Windows/ChartWindow.xaml.cs b/Elwig/Windows/ChartWindow.xaml.cs index 5548488..c65e44c 100644 --- a/Elwig/Windows/ChartWindow.xaml.cs +++ b/Elwig/Windows/ChartWindow.xaml.cs @@ -639,10 +639,11 @@ namespace Elwig.Windows { private async void SaveButton_Click(object sender, RoutedEventArgs e) { SaveButton.IsEnabled = false; - Mouse.OverrideCursor = Cursors.AppStarting; + Mouse.OverrideCursor = Cursors.Wait; try { - using (var ctx = new AppDbContext()) { + await Task.Run(async () => { + using var ctx = new AppDbContext(); var origData = BillingData.FromJson(PaymentVar.Data); var data = BillingData.FromGraphEntries(GraphEntries, origData, Utils.GetVaributes(ctx, Year), AllVaributesAssigned, AllVaributesAssignedAbgew); @@ -650,27 +651,31 @@ namespace Elwig.Windows { PaymentVar.Data = data.ToJsonString(); ctx.Update(PaymentVar); await ctx.SaveChangesAsync(); - } - try { - var b = new BillingVariant(PaymentVar.Year, PaymentVar.AvNr); - await b.Calculate(); - } catch (Exception exc) { - MessageBox.Show(exc.Message, "Berechnungsfehler", MessageBoxButton.OK, MessageBoxImage.Error); - } - LockContext = false; - App.HintContextChange(); + }); } catch (Exception exc) { + Mouse.OverrideCursor = null; var str = "Der Eintrag konnte nicht in der Datenbank gespeichert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error); SaveButton.IsEnabled = true; return; - } finally { - Mouse.OverrideCursor = null; } + try { + await Task.Run(async () => { + var b = new BillingVariant(PaymentVar.Year, PaymentVar.AvNr); + await b.Calculate(); + }); + } catch (Exception exc) { + MessageBox.Show(exc.Message, "Berechnungsfehler", MessageBoxButton.OK, MessageBoxImage.Error); + } + + LockContext = false; + App.HintContextChange(); LockContext = true; SetHasChanged(false); + + Mouse.OverrideCursor = null; } private void EnableTextBox(TextBox u) {