исправь ошибки в коде:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection.Emit;
using static System.Windows.Forms.AxHost;
using System.Threading;

namespace WindowsFormsApp1
{
    public partial class Form2 : Form
    {
        // Variable Declarations
        public double[,] PZT;        // Массив значений функции Z
        public double ShagY;         // Шаг изменения аргументов Y
        public double MaxX, MinX, MaxY, MinY, ShagX;
        public int NN, I, J;
        public string FileN, FileE, LineS;
        public StreamReader StRead;
        public StreamWriter StWrit;
        public double[] PXT, PYT;    // Массив аргументов X, Массив значений функции Y
        public DateTime BT, FT;      // Время начала и окончания процесса
        public TimeSpan ST;          // Длительность процесса
        private ThreadCallBack tcallRes;
        private int TH;

        // Включим потоковые объекты как локальные переменные
        private ThreadWithState tstat1, tstat2, tstat3;
        private Thread thred1, thred2, thred3;

        public ThreadWithState[] tstat = new ThreadWithState[0];
        // Объявление массива объектов tstat класса ThreadWithState
        public Thread[] thred = new Thread[0]; // Объявление массива объектов thred класса Thread

        public Form2()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            tstat = new ThreadWithState[TH]; // Создание массива объектов tstat класса ThreadWithState
            thred = new Thread[TH]; // Создание массива объектов thred класса Thread
            // Цикл создания потоков
            I = 0; // Обнуление счётчика потоков
            while (I < TH) // Цикл до конца массива потоков
            {
                tstat[I] = new ThreadWithState(NN, MinX, MaxX, MinY, MaxY, I + 1, new ThreadCallBack(tcallRes)); // Создание объекта tstat[I] класса ThreadWithState и передача в конструктор параметров(NN, MinX, MaxX, MinY, MaxY, TH, tcallRes)
            thred[I] = new Thread(newThreadStart(tstat[I].ThreadDoWork)); // Создание объекта thred[I] класса Thread и запуск рабочей функции потока ThreadDoWork
            I++; // Наращивание счётчика
            } // Конец цикла while (I < TH)
              // Цикл запуска потоков
I = 0; // Обнуление счётчика потоков
            while (I < TH) // Цикл до конца массива потоков
            {
                thred[I].Start(); // Запуск потока thred[I]
                thred[I].Join(); // Приостановка главного потока программы и ожидание завершения потока thred[I]
            I++; // Наращивание счётчика
            } // Конец цикла while (I < TH)
              // Цикл завершения потоков
            try // Начало секции обработки исключительной ситуации
            {
                I = 0; // Обнуление счётчика потоков
                while (I < TH) // Цикл до конца массива потоков
                {
                    thred[I].Abort(); // Завершение работы потока thred[I]
                    I++; // Наращивание счётчика
                } // Конец цикла while (I < TH)
            }
            catch (ThreadAbortException) // Исключение,  ошибкой при завершении потока
            {
            } // Обработка любой исключительной ситуации
            // Получение значений из текстбоксов
            TH = Convert.ToInt32(textBox6.Text);
            MinX = Convert.ToDouble(textBox1.Text);
            MaxX = Convert.ToDouble(textBox2.Text);
            MinY = Convert.ToDouble(textBox4.Text);
            MaxY = Convert.ToDouble(textBox5.Text);

            BT = DateTime.Now;

            ConfigureProgressBar(NN);

            InitializeArrays(NN, MinX, MaxX);

            CalculatePYT(NN);

            WritePXTToFile("C://A_1.txt", PXT, NN);

            progressBar1.Value = progressBar1.Maximum;
            progressBar1.Refresh();

            UpdateTimeLabels(BT, FT);

            // Создание объектов tstat1, tstat2, tstat3 класса ThreadWithState и передача в конструктор параметров
            tstat1 = new ThreadWithState(NN, MinX, MaxX, MinY, MaxY, 1, tcallRes);
            tstat2 = new ThreadWithState(NN, MinX, MaxX, MinY, MaxY, 2, tcallRes);
            tstat3 = new ThreadWithState(NN, MinX, MaxX, MinY, MaxY, 3, tcallRes);

            // Создание объектов thred1, thred2, thred3 класса Thread и запуск рабочей функции потока ThreadDoWork
            thred1 = new Thread(new ThreadStart(tstat1.ThreadDoWork));
            thred2 = new Thread(new ThreadStart(tstat2.ThreadDoWork));
            thred3 = new Thread(new ThreadStart(tstat3.ThreadDoWork));

            // Запуск потоков thred1, thred2, thred3
            thred1.Start();
            thred2.Start();
            thred3.Start();

            // Приостановка главного потока программы и ожидание завершения потоков thred1, thred2, thred3
            thred1.Join();
            thred2.Join();
            thred3.Join();

            // Видоизменим блок обработки исключений 
            try
            {
                if (thred1.IsAlive)
                    thred1.Abort();
                if (thred2.IsAlive)
                    thred2.Abort();
                if (thred3.IsAlive)
                    thred3.Abort();
            }
            catch (ThreadAbortException)
            {
                // Обработка любой исключительной ситуации
            }

            StartBackgroundThread();
        }

        private ThreadStart newThreadStart(Action threadDoWork)
        {
            throw new NotImplementedException();
        }

        private void ConfigureProgressBar(int nn)
        {
            progressBar1.Maximum = nn <= 100 ? 100 : nn;
            progressBar1.Step = nn <= 100 ? 1 : nn / 100;
            progressBar1.Minimum = 0;
            progressBar1.Value = 0;
        }

        private void InitializeArrays(int nn, double minX, double maxX)
        {
            PXT = new double[nn];
            PYT = new double[nn];
            ShagX = (maxX - minX) / (nn - 1);
            PXT[0] = minX;

            for (I = 1; I < nn; I++)
            {
                PXT[I] = PXT[I - 1] + ShagX;
                UpdateProgress();
            }
        }

        private void CalculatePYT(int nn)
        {
            for (I = 0; I < nn; I++)
            {
                PYT[I] = Math.Cos(Math.Pow(PXT[I], 3)) *
                         (4 * Math.Sin(PXT[I]) - Math.Sin(12 * PXT[I]) - 3 * Math.Sin(4 * PXT[I]));
                UpdateProgress();
            }
        }

        private void WritePXTToFile(string filePath, double[] pxt, int nn)
        {
            using (StWrit = new StreamWriter(filePath, false, Encoding.Default))
            {
                LineS = "PXT: ";
                for (I = 0; I < nn; I++)
                {
                    LineS += pxt[I].ToString() + (I < nn - 1 ? "; " : ";\n");
                }
                StWrit.WriteLine(LineS);
            }
        }

        private void UpdateTimeLabels(DateTime start, DateTime end)
        {
            FT = DateTime.Now;
            label10.Text = start.ToString("HH: mm:ss: fff");
            label11.Text = end.ToString("HH: mm:ss: fff");
            ST = end - start;
            label12.Text = $"{ ST.Hours:D2}:{ ST.Minutes:D2}:{ ST.Seconds:D2}:{ ST.Milliseconds:D3}";
        }

        private void StartBackgroundThread()
        {
            PZT = new double[NN, NN];
            var tstat = new ThreadWithState(NN, MinX, MaxX, MinY, MaxY, TH, new ThreadCallBack(tcallRes));
            var thred = new Thread(new ThreadStart(tstat.ThreadDoWork));
            thred.Start();
            thred.Join();
        }

        private void UpdateProgress()
        {
            if ((progressBar1.Value + progressBar1.Step) < progressBar1.Maximum)
            {
                progressBar1.Value += progressBar1.Step;
                progressBar1.Refresh();
                FT = DateTime.Now;
                ST = FT - BT;
                label11.Text = ST.ToString();
                label11.Refresh();
            }
        }

        public static void TcallRes(int cNN, int cTH, double[] cXT, double[] cYT, double[,] cZT)

        {
            DateTime BTcb = DateTime.Now; // Время начала процесса
            string FileNcb = "D://A_cb_" + cTH.ToString() + ".txt"; // Формирование имени файла данных
            using (var StWritcb = new StreamWriter(FileNcb, false, Encoding.Default)) // Объект потока вывода
            {
                // Запись логики и данных в файл
                // Оставлю как комментарии, так как Вы не предоставили реализацию
            }
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            textBox1.Text = "1";
            textBox2.Text = "5";
            textBox3.Text = "10";
            textBox4.Text = "1";
            textBox5.Text = "5";
            textBox6.Text = "4";
        }

        private void DoWork(int tNN, double[] tXT, double[] tYT, double[,] tZT)
        {
            // Цикл для вычисления функции
            I = 0; // Обнуление счётчика по массиву аргументов X
            while (I < tNN) // Цикл по массиву аргументов X
            {
                J = 0; // Обнуление счётчика столбцов
                while (J < tNN) // Цикл по массиву аргументов Y
                {
                    tZT[I, J] = 4 * Math.Sin(tXT[I]) * Math.Cos(Math.Pow(tXT[I], 3))
                                - Math.Sin(12 * tYT[J]) * Math.Cos(Math.Pow(tXT[I], 3))
                                - 3 * Math.Sin(4 * tYT[J]) * Math.Cos(Math.Pow(tXT[I], 3));

                    if (progressBar1 != null && (progressBar1.Value + progressBar1.Step) < progressBar1.Maximum)
                    {
                        progressBar1.Value += progressBar1.Step;
                        progressBar1.Refresh();

                        FT = DateTime.Now;
                        ST = FT - BT;
                        label11.Text = ST.ToString();
                        label11.Refresh();
                    }
                    J++; // Наращивание счётчика цикла
                }
                I++; // Наращивание счётчика цикла
            }

            // Вывод результатов в файл
            FileN = "C://A_1.txt"; // Формирование имени файла данных

            using (StWrit = new StreamWriter(FileN, false, System.Text.Encoding.Default))
            {
                LineS = BT.Year.ToString() + "." +BT.Month.ToString() + "." +BT.Day.ToString() + ", " +
                        BT.Hour.ToString() + ":" +BT.Minute.ToString() + ":" +BT.Second.ToString() + ":" +BT.Millisecond.ToString();
                StWrit.WriteLine(LineS); // Вывод строки в поток вывода

                // Цикл вывода данных в файл
                LineS = "PXT: ";
                I = 0; // Обнуление счётчика по массиву аргументов X
                while (I < tNN) // Цикл до конца массива аргументов Х
                {
                    LineS += tXT[I].ToString() + "; "; // Занесение значения аргумента Х в строку
                    I++; // Наращивание счётчика
                }
                StWrit.WriteLine(LineS + "\n"); // Вывод строки в поток вывода

                // Цикл вывода в файл значений функции
                LineS = "PZT: "; // Инициализация строки
                I = 0; // Обнуление счётчика строк
                while (I < tNN) // Цикл до конца массива значений функции
                {
                    J = 0; // Обнуление счётчика столбцов
                    while (J < tNN) // Цикл до конца массива значений функции
                    {
                        LineS += tZT[I, J].ToString() + "; "; // Занесение значения функции в строку
                        J++; // Наращивание счётчика
                    } // Конец цикла while (J < tNN)
                    StWrit.WriteLine(LineS); // Вывод строки в поток вывода
                    LineS = " "; // Инициализация строки
                    I++; // Наращивание счётчика строк
                } // Конец цикла while (I < tNN)
            } // Поток закроется здесь из-за using блока
        }
    }
}