C# 在新线程或任务中打开表单?

amc*_*amc 4 c# multithreading visual-studio winforms

如何使用线程或任务在 C# 中打开新表单。

例子:

public void openform()
{
    Form _form = new Form();
    _form.show()
}

Thread _thread = new Thread(openform);
_thread.start();
Run Code Online (Sandbox Code Playgroud)

如果我使用线程,它会打开表单并再次关闭它。

mm8*_*mm8 7

如果你简单地设置并启动另一个消息循环,你可以创建另一个 UI 线程:ApartmentStateSTA

Thread _thread = new Thread(() =>
{
    Application.Run(new Form());
});
_thread.SetApartmentState(ApartmentState.STA);
_thread.Start();
Run Code Online (Sandbox Code Playgroud)

请注意,您将无法在此窗体的主线程上显示您创建的控件。这就是为什么创建多个 UI 线程通常是一个坏主意。