我需要spawn a Form
可以像往常一样使用,但主线程必须继续进行之后的任何操作。当我尝试2个技术下面我不能使用形式:如何生成表单并且不阻塞主线程?
static class Program
{
private static void spawnForm1()
{
new Form1().Show();
}
private static void spawnForm2()
{
// solved: use ShowDialog() instead of Show() here
ThreadPool.QueueUserWorkItem(o => { new Form1().Show(); });
}
[STAThread]
static void Main()
{
spawnForm1();
MessageBox.Show("main thread continues");
// now anything can happen: background processing or start of main form
// sleeping is just an example for how the form is unresponsive
Thread.Sleep(30 * 1000);
}
}
所以,我怎么能生成一个简单的表格,继续在主线程?它应该像消息框一样响应。
(我不能使用Application.Run(...);
,我不能用ShowDialog()
是否会阻塞主线程,也:我很抱歉,我没有太多的声誉,但是这不是一个noob问题,我真的需要它会像我试图解释的那样产生)
这听起来像是一个严重的设计问题。 * my * WinForm应用程序中的主线程始终负责UI,而其他线程(线程池和/或后台工作者)负责其他非可视化作业。你的问题在我看来,你想要做的只是另一种方式。 –
@UweKeim主窗口像应用程序一样总是运行。但是我需要产生一个窗口,就像我在现有的主窗口中描述的一样,也没有它。 – Bitterblue
从主线程启动一个窗口,并在该窗口中进行后台处理。 –