gpt4 book ai didi

c# - .net core - 如何正确终止启动进程?

转载 作者:行者123 更新时间:2023-11-30 18:14:11 24 4
gpt4 key购买 nike

我有一个 dotnet core 2.0 控制台应用程序可以启动另一个 dotnet core WebAPI。问题是,如何在控制台应用程序关闭时彻底终止 WebAPI 进程?因为截至目前,我无法启动该进程两次,因为它给出了地址正在使用的错误,但我仍然可以在任务管理器中看到该进程。

这是我尝试这样做的方法,但似乎缺少完全杀死所有进程的东西:

class Program
{
static Process cmd;

static async Task Main(string[] args)
{
AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;

var startInfo = new ProcessStartInfo("cmd.exe")
{
UseShellExecute = false,
RedirectStandardInput = true,
CreateNoWindow = true,
};

cmd = new Process { StartInfo = startInfo };

cmd.Start();

using (cmd)
{
cmd.StandardInput.WriteLine($"cd C:/Project/publish");
cmd.StandardInput.WriteLine($"dotnet WebAPI.dll");
cmd.WaitForExit();
}
}

static void CurrentDomain_ProcessExit(object sender, EventArgs e)
{
Process.GetProcessById(cmd.Id).Kill();
Environment.Exit(0);
}
}

最佳答案

根据@mjwills 的建议,我已将流程更新如下:

class Program
{
static Process webAPI;

static async Task Main(string[] args)
{
AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;

webAPI = new Process
{
StartInfo = new ProcessStartInfo("dotnet")
{
UseShellExecute = false,
WorkingDirectory = "C:/Project/publish",
Arguments = "WebAPI.dll",
CreateNoWindow = true
}
};
using (webAPI)
{
webAPI.Start();
webAPI.WaitForExit();
}
}

static void CurrentDomain_ProcessExit(object sender, EventArgs e)
{
webAPI.Close();
}
}

关于c# - .net core - 如何正确终止启动进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50896621/

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