Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当新建表单时,我会得到进程还是线程?_C# - Fatal编程技术网

C# 当新建表单时,我会得到进程还是线程?

C# 当新建表单时,我会得到进程还是线程?,c#,C#,在C#中,我有两种形式:mainForm和form1 class Form1; //... class mainForm { //... void f() { Form1 form1 = new Form1(); ... } } 我想等待form1退出并在mainForm中继续以下工作。但我不知道form1是作为进程或线程实现的,也不知道如何获取其ID 谢谢。两者都不是。它与其他表单运行在同一个UI线程上,除非您不遗余力地做一些聪明的事情

在C#中,我有两种形式:mainForm和form1

class Form1; //...
class mainForm {
    //...
    void f() {
        Form1 form1 = new Form1();
        ...
    }
}
我想等待form1退出并在mainForm中继续以下工作。但我不知道form1是作为进程或线程实现的,也不知道如何获取其ID


谢谢。

两者都不是。它与其他表单运行在同一个UI线程上,除非您不遗余力地做一些聪明的事情,使用消息泵处理发送给所有表单的消息

你想做什么?通常,保持对第二个表单实例的引用就足以发送消息等


要等待第二个表单完成,请使用
ShowDialog()
,或者如果您在表单中,
ShowDialog(this)
form1在同一主线程上运行,您只需像模态对话框一样运行form1即可

Form1 form1 = new Form1();
form1.ShowDialog(this); //mainForm waits till form1 finishs its work
//extra work in mainForm 

谢谢你,格雷威尔,我说了很多。我明白了,我还有一个问题。我想我可以通过使用PeekMessage来做到这一点。但我不知道如何在.Net中实现它。我知道如何在.Net中封装Win32 API,但我认为这很难看。