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

标签 c# multithreading winforms visual-studio

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

例子:

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

Thread _thread = new Thread(openform);
_thread.start();

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

最佳答案

如果您简单地将 ApartmentState 设置为 STA 并启动另一个消息循环,您可以创建另一个 UI 线程:

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

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

关于C# 在新线程或任务中打开表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47438631/

相关文章:

c# - 使用 C# 以编程方式操作 PostBackUrl

Java 线程屈服/饥饿问题

.net - 如果我调用WaitHandle.Dispose(),正在等待的线程会怎样?

C# Winforms 和命令行批处理文件

c# - 如何使用 (anyword +'་') 创建一个后续字符,然后使用 c# 在 WinForm 中创建下一个新行?

c# - 列出 KeyVault 中的 secret 而无需登录每个 secret ?

c# - 在 Linq to XML 中将 XML 属性转换为字典

c# - 搜索 "all references"(Visual Studio)

java - 在多线程中维护Arraylist的顺序

c# - 从具有参数的 'Form' 继承