2010-06-15 79 views
0

我最初创建了一个窗体窗体作为我的项目主窗体的对话框。现在对话变得越来越复杂,需要在自己的过程中开始。有没有办法在代码中做到这一点,或者我需要创建一个新的项目,并将我的文件链接到它?在新进程中产卵表格

+1

你能澄清一下为什么你需要在一个单独的过程中的形式?这会导致在表单和其他应用程序之间共享信息时遇到困难(不是无法克服,但效率低下)。如果这仅仅是因为表单需要大量计算,例如,您是否考虑过多线程? – 2010-06-15 21:52:23

+0

它与此有关:http://stackoverflow.com/questions/3026294/decompressing-a-very-large-serialized-object-and-managing-memory 本质上,当我关闭我的对话框,即使我确保Dispose被调用,CPU将以50%的速度旋转并旋转。 – 2010-06-15 21:57:56

回答

3

我质疑这里的前提 - 没有必要在一个单独的过程中启动一个新的“表单”。但是,如果表单变得复杂,我建议简化它,除非可用性以外没有任何其他原因。

这就是说,你总是可以通过代码中的Process.Start启动一个新的进程。如果你希望它在同一个项目中,但是启动一个单独的进程,你可以用一个命令行参数启动正在执行的exe文件,这个参数允许你切换启动时加载哪个“表单”。

1

您将需要建立一个通信层(WCF使用命名管道可能是最好的方法)。

但我会认真地质疑为什么你需要一个新的流程为您的窗体?确保你在表单上做的任何工作都是在单独的线程上完成的。这样你就可以打开几十个表单,但是你的应用会保持非常快速的响应。

这不是最好的解决方案,但如果您试图避免重写,那么调用Application.DoEvents将抽取消息队列,并在您的UI上发生大量更新时获得一些响应。乐队援助解决方案,但你的问题。