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);
        }