// Läuft auf dem UI-Thread
        private void ButtonStarteBerechnung_Anklicken(object sender, RoutedEventArgs e)
        {
            var eventHandler = KennlinienberechnungAngefordert;

            if (eventHandler != null)
            {
                try
                {
                    KennlinienmodellArgs args = BelegeKennlinienberechnungArgumente();
                    args.PruefeKonsistenz();
                    eventHandler(this, args);
                }
                catch (CharacteristicCurveInputException)
                {
                }
            }
        }
        private KennlinienmodellArgs BelegeKennlinienberechnungArgumente()
        {
            KennlinienmodellArgs args = new KennlinienmodellArgs();

            try
            {
                args.BelegeGenauigkeit(Genauigkeit.Value);
                args.BelegeStartgeschwindigkeit(Startgeschwindigkeit.Text);
                args.BelegeEndgeschwindigkeit(Endgeschwindigkeit.Text);
                args.BelegeAnzahlPunkte(AnzahlPunkte.Text);
                args.BelegeAlleKraefte(AlleKraefte.IsChecked.Value);
            }
            catch (CharacteristicCurveInputException)
            {
                throw;
            }

            return(args);
        }
 // Läuft auf dem UI-Thread
 private void StarteBerechnung(object sender, KennlinienmodellArgs args)
 {
     hintergrundArbeiter.RunWorkerAsync(args);
     ButtonStarteBerechnung.IsEnabled   = !hintergrundArbeiter.IsBusy;
     ButtonBrecheBerechnungAb.IsEnabled = hintergrundArbeiter.IsBusy;
 }