gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:33:57 25 4
gpt4 key购买 nike

我希望将在单独的类库项目中定义的窗口 (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com