C #, как достичь чего-то в текущем потоке, который создан в другом потоке?

Я пишу чат-клиент / серверное приложение на C #, и у меня возникла проблема с многопоточностью. Я написал этот простой код для отображения моей проблемы.

Я использовал thread_1 для показа формы, но он просто показывает ее секунду (возможно, thread_1 завершил работу и закрыл форму, но я сказал, что IsAlive жив!). Thread_2 пытается добраться до texBox, созданного в основном потоке, но он показывает мне:

"Cross-thread operation not valid: Control 'textBox2' accessed from a thread other than the thread it was created on."

Я не знаю, как решить первую проблему, но я решил вторую проблему с BackgroundWorker, но мне нравится делать это с потоком. Там в любом случае?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    Thread t1;
    Thread t2;


    private void button1_Click(object sender, EventArgs e)
    {

        t1 = new Thread(doThread1);
        t1.Name = "thread_1";

        t2 = new Thread(doThread2);
        t2.Name = "thread_2";

        t1.Start();
        t2.Start();

        MessageBox.Show(t1.IsAlive.ToString());
    }

    private void doThread1()
    {
        Form frm2 = new Form();
        frm2.Show();
    }


    private void doThread2()
    {
        try
        {
            for (int j = 10000; j > 0; j--)
                textBox.Text = j.ToString();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }


}

Ответы на вопрос(2)

Ваш ответ на вопрос