Как запустить новую форму в другом потоке в C #?

Я просто пытаюсь запустить новый поток каждый раз, когда происходит нажатие кнопки, что должно создать новую форму. Я попробовал это в событии нажатия кнопки в MainForm:

private void button1_Click(object sender, EventArgs e)
{
    worker1 = new Thread(new ThreadStart(thread1));
    worker2 = new Thread(new ThreadStart(thread2));

    worker1.Start();
    worker2.Start();
}

private void thread1()
{
    SubForm s = new SubForm();
    s.Show();
}

private void thread2()
{
    SubForm s = new SubForm();
    s.Show();
}

Код в событии нажатия кнопки Subform выглядит следующим образом:

private void button1_Click(object sender, EventArgs e)
{
    int max;
    try
    {
        max = Convert.ToInt32(textBox1.Text);
    }
    catch
    {
        MessageBox.Show("Enter numbers", "ERROR");
        return;
    }

    progressBar1.Maximum = max;

    for ( long i = 0; i < max; i++)
    {
        progressBar1.Value = Convert.ToInt32(i);
    }          
}

Это правильный путь? Поскольку я пытаюсь открыть две независимые формы, операции в одном потоке не должны влиять на другой поток.

Или BackGroundworker - решение для реализации этого? Если да, может кто-нибудь помочь мне с этим?

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

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