private void Button_Click(object sender, RoutedEventArgs e) { this.Result.Text = String.Empty; List <Int64> factorList; FieldInfo fundamentalUnit = (FieldInfo)this.QuadraticFieldComboBox.SelectedValue; string classCharacterRingCoef = this.classCharacterRingCoef.Text; if (String.IsNullOrEmpty(classCharacterRingCoef) || fundamentalUnit == null) { MessageBox.Show("Введите информацию о классовом кольце характера и о квадратичном поле!", "Ошибка ввода", MessageBoxButton.OK, MessageBoxImage.Warning); return; } if (!TryParseFactors(classCharacterRingCoef, out factorList)) { MessageBox.Show("Некорректная информация о квадратичном поле!" + Environment.NewLine + "Используйте ^ и * для возведения в степень и умножения", "Ошибка ввода", MessageBoxButton.OK, MessageBoxImage.Warning); return; } var periodList = factorList.AsParallel().Select(item => getPeriod(fundamentalUnit, item)); var period = UnitInQuadraticFieldSearching.GetGeneralPeriod(periodList); this.Result.Text = this.Result.Text + Environment.NewLine + String.Format("T({0}) = {1}", classCharacterRingCoef, period) + Environment.NewLine; }
private Int64 getPeriod(FieldInfo fieldInfo, Int64 item) { var result = UnitInQuadraticFieldSearching.GetPeriod(fieldInfo, item); this.Result.Dispatcher.BeginInvoke(new ThreadStart(delegate { this.Result.Text = this.Result.Text + Environment.NewLine + String.Format("T({0}) = {1}", item, result); })); return(result); }