Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# 如何在新流程中启动form2?_C#_.net_Winforms_Process_Exe - Fatal编程技术网

C# 如何在新流程中启动form2?

C# 如何在新流程中启动form2?,c#,.net,winforms,process,exe,C#,.net,Winforms,Process,Exe,我有一个有两个表单的项目,我需要在一个新的流程中启动form2,我如何才能做到这一点? 我知道有 Form2 f2 = new Form2(); f2.Show(); this.Hide(); 但在这种情况下,这对我不好。 我需要在新进程中启动(作为另一个.exe文件) 那我该怎么做呢 [更新] 我忘了告诉你我需要向form2传递一些信息,比如 Form2 f2 = new Form2(someInformation); f2.Show(); this.Hide(); 您可以在单独的项目中创

我有一个有两个表单的项目,我需要在一个新的流程中启动form2,我如何才能做到这一点? 我知道有

Form2 f2 = new Form2();
f2.Show();
this.Hide();
但在这种情况下,这对我不好。 我需要在新进程中启动(作为另一个.exe文件)

那我该怎么做呢

[更新]

我忘了告诉你我需要向form2传递一些信息,比如

Form2 f2 = new Form2(someInformation);
f2.Show();
this.Hide();

您可以在单独的项目中创建Form2,并通过

System.Diagnostics.Process.Start("Form2.exe");

如果您指的是新线程,请执行以下操作:

 var secondFormThread = new Thread(() => Application.Run(new Form(someInformation)));

 this.Hide();                       // Hide the current form

 secondFormThread .Start();         // now show the other one in a new thread
 secondFormThread .WaitForExit();   // wait for this thread to finish or
                                    // maybenot, may add a timeout. Whatever 
                                    // suits your needs.

 this.Show();                       // Show the first form again

创建表单的实例并在单独的线程中显示它

new Thread(() => {
    Form2 f2 = new Form2(someInformation);
    f2.ShowDialog();
}).Start();

为什么要这样做?如果确实需要,可以继续使用@Tomtom answer,也可以在
main
中添加功能,以调用
.exe
,并使用表示需要打开的表单的参数。但是,如果您还想传递数据,这似乎真的很困难(而且没有必要)。这是一个不错的主意,我正在考虑。如果您确实需要使用不同的流程,请尝试此。。。他说的是新流程,不是新思路。这两者之间有很大的区别。是的,但有时人们不知道线程和进程之间的区别。所以差别并不是那么大……是的,差别是巨大的。事实上,人们把两者混淆并不意味着这没有什么大的区别。如果你怀疑OP意味着他想要另一个过程,那么你可以考虑评论,询问他是否确信他是指进程和线程。事实上,问题很清楚,它需要的是一个新进程,而不是一个新线程,所以这个答案显然是不正确的。如果OP意识到他犯了一个错误并编辑了问题以表明他想要一个新的线程,而不是一个新的进程,那么这样的回答是合适的。是的,但我真正的意思是进程而不是线程,我知道区别。:)但是谢谢你的时间。@Servy这就是我为什么写的原因:如果你是指一个新的线程,那么就这样做:我会这样做,但是按照@Schaliasos说的方式。这应该如何工作?我从一个表单上启动它,它实际上正在显示对话框,它显示并运行。。。