如何使用线程或任务在C#中打开新表单。
示例:
public void openform()
{
Form _form = new Form();
_form.show()
}
Thread _thread = new Thread(openform);
_thread.start();
如果我使用线程,它会打开表单并再次关闭它。
答案 0 :(得分:2)
如果只是将ApartmentState
设置为STA
并启动另一个消息循环,可以创建另一个UI线程:
Thread _thread = new Thread(() =>
{
Application.Run(new Form());
});
_thread.SetApartmentState(ApartmentState.STA);
_thread.Start();
请注意,您无法显示在此表单上的主线程上创建的控件。这就是为什么创建多个UI线程通常是一个坏主意。
答案 1 :(得分:-1)
Thread thd = new Thread(() =>
{
//Do Some stuff
//Do some more stuff
var dispatcher = Dispatcher.CurrentDispatcher;
dispatcher.UnhandledException += Dispatcher_UnhandledException; //you exception handling logic
Dispatcher.Run();
});
thd.IsBackground = true;
thd.SetApartmentState(ApartmentState.STA);
thd.Start();
完成后根据您的用例调用Dispacther.InvokeShutdown();
。
答案 2 :(得分:-2)
使用ShowDialog
仅在关闭窗口时返回:
new Thread(() => new MyForm().ShowDialog()).Start();