Обычно вам не нужен другой поток, вы открываете форму как обычно в модальном или немодальном режиме, если форма требует выполнения тяжелого процесса, вы выполняете процесс внутри потока.
В зависимости от вашего вопроса, один из вариантов - запустить форму из Application.Run, как описано здесь .
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(ThreadProc);
thread.Start();
}
public void ThreadProc()
{
using (Form1 _form = new Form1())
{
_form.TopMost = true;
Application.Run(_form);
}
}
}
Это запустит новый поток с собственным насосом сообщений и сохранит его как форму TopMost.