При первом нажатии кнопки выводятся предыдущие значения чисел

Задание состоит в том, что пользователь вводит 2 числа в textbox1 и textbox2. Эти значения записываются в файл, а из файла выводятся ответы факториала и простых чисел. Проблема состоит в том, что при первом запуске программы(при нажатии кнопки) из файла выводится значения предыдущего клика кнопки. То есть не происходит обновления значений сразу же, а после следующего нажатия кнопки значения выводятся. И так каждый раз. Надо два раза нажимать, чтобы произошло обновление значений. Грешу на StreamWriter, но мне не ясно как сделать так, чтобы сразу же записывались значения в файл, а потом из файла выводилось в mackedtextbox.


namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        static double Factorial(int x)
        {
            
            if (x == 0)
            {
                return 1;
            }
            else
            {
                return x * Factorial(x - 1);
            }
        }

        static bool Prost(int number)
        {

            if (number < 2) return false;
            for (int i = 2; i <= Math.Sqrt(number); i++)
            {
                if (number % i == 0)
                    return false;
            }
            return true;
        }

        // возвращает строку, содержащую последовательность простых чисел от 2 до N через запятую
        private string GetPrimeNumbers(int n)
        {

            List<int> primeNumbers = new List<int>();
            for (int i = 2; i <= n; i++)
            {
                if (Prost(i))
                    primeNumbers.Add(i);
            }
            return string.Join(",", primeNumbers);
        }

        public Form1()
        {
            InitializeComponent();


        }

        public void Fact()
        {
            richTextBox3.Text = Convert.ToString(Factorial(int.Parse(textBox1.Text)));
        }

        public void Prostie()
        {
            richTextBox4.Text = Convert.ToString(GetPrimeNumbers(int.Parse(textBox3.Text)));
        }
        
        public void Click1()
        {
            CheckForIllegalCrossThreadCalls = false;
            Thread thread1 = new Thread(Fact);
            StringBuilder sk = new StringBuilder();
            {
                Thread.Sleep(500);
                thread1.Priority = ThreadPriority.Lowest;
                thread1.Start();
                thread1.IsBackground = true;
                {
                    using (FileStream file = File.Open("info.txt", FileMode.Append))      
                    using (StreamWriter writer = new StreamWriter(file, Encoding.UTF8, 64))
                    {
                        {
                            //writer.WriteLine(textBox1.Text);
                            writer.WriteLine(richTextBox3.Text);
                            writer.Dispose();
                            writer.Close();
                            file.Close();
                            thread1.Join();
                            thread1.Abort();
                        }
                    }
                }
            }

            using (var fileStream = File.OpenRead("info.txt"))
            using (var streamReader = new StreamReader(fileStream, System.Text.Encoding.UTF8, true))
            {
                String line;
                while ((line = streamReader.ReadLine()) != null)
                {
                    richTextBox1.Text = File.ReadAllText(@"info.txt");
                }
                //streamReader.ReadToEnd();
                streamReader.Close();
                fileStream.Close();       
            }


            StringBuilder sbz = new StringBuilder();
            using (StreamReader sr = new StreamReader(@"info.txt"))
            {
                string line;
                sr.BaseStream.Seek(-8, SeekOrigin.End); //минус кол. символов с конца файла
                while (!sr.EndOfStream)
                {
                    line = sr.ReadLine();
                    sbz.AppendLine(string.Format(line + " "));
                    maskedTextBox1.Text = sbz.ToString();
                }
            }


            //richTextBox1.Text = File.ReadAllText(@"info.txt");
            Thread thread2 = new Thread(Prostie);
            StringBuilder sw = new StringBuilder();
            {
                Thread.Sleep(300);
                thread2.Priority = ThreadPriority.Lowest;
                thread2.Start();
                thread2.IsBackground = true;
                {

                    using (FileStream file1 = File.Open(@"info2.txt", FileMode.Append))
                    using (StreamWriter writer1 = new StreamWriter(file1, System.Text.Encoding.UTF8, 64))
                    {
                        {
                            //writer1.WriteLine(textBox3.Text);
                            writer1.WriteLine(richTextBox4.Text);
                            writer1.Flush();
                            writer1.Dispose();
                            writer1.Close();
                            file1.Close();
                            thread2.Join();
                            thread2.Abort();
                        }
                    }
                }
               
            }
            

            using (var fileStream = File.OpenRead(@"info2.txt"))
            using (var streamReader = new StreamReader(fileStream, System.Text.Encoding.UTF8, true))
            {
                String line;
                while ((line = streamReader.ReadLine()) != null)
                {
                    richTextBox2.Text = File.ReadAllText(@"info2.txt");
                }
                streamReader.Close();
                fileStream.Close();
            }



            StringBuilder sb = new StringBuilder();
            using (StreamReader sr = new StreamReader(@"info2.txt"))
            {
                string line;
                sr.BaseStream.Seek(-30, SeekOrigin.End); //минус кол. символов с конца файла
                while (!sr.EndOfStream)
                {
                    line = sr.ReadLine();
                    //sb.AppendLine(string.Format("\r" + " "));
                    sb.AppendLine(string.Format(" " + line + " "));
                    maskedTextBox2.Text = ( sb.ToString());
                }
            }




        }
   
        private void button1_Click(object sender, EventArgs e)
        {
            Click1();
            
        }

    }
}

Ответы (0 шт):