我遇到了这样的问题
My form doesn't properly display when it is launched from another thread
现在我的问题是如何从自定义类调用Invoke方法而不是从Form
调用void call_thread()
{
Thread t = new Thread(new ThreadStart(this.ShowForm1));
t.Start();
}
delegate void Func();
private void ShowForm1()
{
if (this.InvokeRequired) //error
{
Func f = new Func(ShowForm1);
this.Invoke(f); //error
}
else
{
Form1 form1 = new Form1();
form1.Show();
}
}
答案 0 :(得分:1)
你做不到。调用特定于Winforms控件,因为它将消息输入Windows消息泵以执行您需要执行的任何操作。因此,在您的自定义类中,显然没有Message Pump,这是不可能的。
答案 1 :(得分:0)
我得到答案
在线程中我可以调用form1.ShowDialog();它不会显示为Dialog,因为它在另一个线程中
新代码
void call_thread()
{
Thread t = new Thread(new ThreadStart(this.ShowForm1));
t.Start();
}
private void ShowForm1()
{
Form1 form1 = new Form1();
form1.ShowDialog();
}