c# - 如何在新流程中启动第二个项目的新实例

标签 c# process .net-assembly

我希望将在单独的类库项目中定义的窗口 (WPF) 显示为新的单独进程。有什么办法吗?

我需要在新进程中启动第二个项目实例,因为这样启动时会一直占用内存:

secondProject.WPFWindow win = new secondProject.WPFWindow();
win.Show();

我有一个包含多个项目的解决方案。

  • 启动项目是 WPF 应用程序,输出类型:Windows 应用程序(exe 文件)。
  • 所有其他项目均为WFP app.,输出类型:类库(dll文件)。

现在我正在通过此代码运行“应用程序”(此解决方案中的其他项目构建为 dll):

secondProject.WPFWindow win = new secondProject.WPFWindow();
win.Show();

我想要的是在新进程中运行应用程序...通常我会使用 Process.Start(),但我不能这样,因为它需要 exe 文件作为辅助,而且我有(并且想要)DLL。

最佳答案

您可以将命令行参数传递给主 .exe 以告诉它运行哪个“子应用程序”。然后主 .exe 可以在一个新进程中自行启动并告诉新实例要运行哪个子应用程序。例如,在主 .exe 应用程序中,将这样的逻辑放在您的应用程序类中:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        //See if exactly one command line argument was passed
        if (e.Args.Length == 1)
        {
            //See if the argument is one of our 'known' values
            switch (e.Args[0])
            {
                case "launchApp2":
                    secondProject.WPFWindow win2 = new secondProject.WPFWindow();
                    win2.Show();
                    break;
                case "launchApp3":
                    thirdProject.OtherWPFWindow win3 = new thirdProject.OtherWPFWindow();
                    win3.Show();
                    break;
            }
        }

        //Probably want to call the base class always?
        base.OnStartup(e);
    }
}

然后任何时候你想在一个新的进程中启动一个子应用程序,你可以这样做:

public void LaunchApp2()
{
    //Start a new process that is ourself and pass a command line parameter to tell
    //  that new instance to launch App2
    Process.Start(Assembly.GetEntryAssembly().Location, "launchApp2");
}

关于c# - 如何在新流程中启动第二个项目的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7501974/

相关文章:

c# - 将大图像文件上传到 SharePoint 时出现问题

c# - 在运行时隐藏标签

c# - 从 C# 代码中启动另一个应用程序

java - java中如何获取进程结束状态?

c# - VS/C# 等同于 Java/Eclipse "resource folder"?

c# - Windows窗体C#如何制作图表正方形的网格线?

c# - .Net 4 中没有 System.IO.File.ReadLines(file).Count() 吗?

c# - 文件系统观察者 IOException

asp.net-mvc - 无法加载文件或程序集“Microsoft.IdentityModel”

configuration - 选择要链接的程序集以使用配置 (MonoDevelop)