我正在编写一个测试应用程序,我需要将Form放在单独的线程上。
所以如果我从主线程创建Form窗口并设置它的.Owner =这一切都有效。 如果我产生线程UIThread并从新线程设置所有者我得到异常。 获取异常是可以理解的,因为您无法直接访问表单。 我的问题是有一条消息,我需要在主线程上捕获并执行BeginInvoke以将其推送到它的消息泵上吗?由于UIForm ShowInTaskbar设置为false,我需要单击任务栏中的主应用程序并使用其所有子窗口进行恢复。
private void UIThread() // New Thread call
{
UIForm form = new UIForm();
form.ShowInTaskbar = false;
form.Owner = this;
Application.Run(form); // Expected Exception
}
答案 0 :(得分:0)
我不确定,每个应用程序只能调用一次Application.Run。看看这个是否适合你
Application.Run(new Form1());
-----------------
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var thread = new Thread(
() =>
{
var form2 = new Form {Owner = this};
});
thread.Start();
}
}