【问题标题】:Spawning form in new process新流程中的产卵形式
【发布时间】:2011-03-04 05:15:15
【问题描述】:

我最初创建了一个 Windows 窗体作为我的项目主窗体的对话框。现在对话框变得足够复杂,需要在自己的进程中启动。有没有办法在代码中做到这一点,还是我需要创建一个新项目并将我的文件链接到它?

【问题讨论】:

  • 你能解释一下为什么你需要在一个单独的过程中的表格吗?这将导致在表单和应用程序的其余部分之间共享信息时遇到困难(不是无法克服,但效率低下)......如果这仅仅是因为表单需要进行大量计算,那么您是否考虑过多线程?
  • 它与此相关:stackoverflow.com/questions/3026294/… 本质上,当我关闭我的对话框时,即使我确保调用了 Dispose,CPU 仍会以 50% 的速度旋转。

标签: c# .net visual-studio .net-3.5


【解决方案1】:

我质疑这里的前提 - 没有理由必须在单独的过程中开始一个新的“表格”。但是,如果表单变得如此复杂,我建议您简化它,除非出于可用性之外的原因。

话虽如此,您始终可以通过代码中的Process.Start 启动新进程。如果您希望它在同一个项目中,但启动一个单独的进程,您可以使用命令行参数启动正在执行的 exe,该参数允许您切换启动时加载的“表单”。

【讨论】:

    【解决方案2】:

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

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

    这不是最好的解决方案,但如果您想避免重写,调用 Application.DoEvents 将在您的 UI 上发生大量更新时将消息队列抽出并让您恢复一些响应。不过,创可贴可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      • 2015-02-15
      相关资源
      最近更新 更多