Для создания удобных пользователю приложений, можно, и нужно использовать многопоточность, ибо он, пользователь, не любит ждать.
Ниже код, с помощью которого, можно реализовать запуск новых форм в разных потоках. При таком способе их вызова, работа функций одной формы не будет замораживать другие.
Подключаем директиву:
using System.Threading;
Собственно код:
private void button1_Click(object sender, EventArgs e)
{
Thread newThread = new Thread(startNewForm);
newThread.IsBackground = true;
//Установка режима STA, чтобы можно было пользоваться стандартными диалогами
//Сохранения/Открытия файлов
newThread.SetApartmentState(ApartmentState.STA);
newThread.Start();
}
private void startNewForm()
{
Form2 newForm = new Form2();
newForm.ShowDialog();
}

