C #, como chegar a algo no segmento atual que criou em outro segmento?

Estou escrevendo app cliente / servidor de bate-papo com c # e eu tenho problema com segmentação. Eu escrevi este código simples para mostrar meu problema.

Eu usei thread_1 para mostrar o formulário, mas ele apenas mostra um segundo (talvez thread_1 terminou e fechou o formulário, mas i IsAlive disse que está vivo!). Thread_2 tenta acessar o texBox criado no thread principal, mas ele me mostra:

"Operação de encadeamento cruzado inválida: controle 'textBox2' acessado de um encadeamento diferente do encadeamento em que foi criado."

Eu não sei como resolver primeiro problema, mas eu resolvi segundo problema com BackgroundWorker, mas eu gosto de fazê-lo com o thread. Existe alguma maneira?

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


}

questionAnswers(2)

yourAnswerToTheQuestion