Visual Studio - 终止创建的所有进程

问题描述 投票:0回答:1

我有一个创建小流程的主流程。

当我停止调试时,这些进程不会自行终止,从而阻止任何重建。 我必须去 Windows 进程管理器,搜索我的进程并每次杀死它们。

有没有办法使用 Visual Studio 来完成此操作,无论是在调试停止时自动还是手动?

visual-studio
1个回答
0
投票

根据我的测试,Visual Studio本身并没有内置的自动终止子进程的模块。另外,我也尝试过使用post-build event命令行,可以在项目生成后添加终止特定进程的命令,但是也需要手动添加每个进程,而且没有办法直接获取所有子进程与主流程相关。不过,如果你想用C#程序来实现这个效果,可以参考以下内容:

如果只想在主进程结束时自动终止子进程,可以使用ProcessExit事件。这是官方的文档供参考,以及我创建的示例:

using System.Diagnostics;

class Program
{
    static Process childProcess;

    static void Main(string[] args)
    {
        Console.WriteLine("Main process started.");

        // Register exit event
        AppDomain.CurrentDomain.ProcessExit += OnProcessExit;

        // Create a child process
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "notepad.exe",
            UseShellExecute = true
        };

        childProcess = Process.Start(startInfo);
        Console.WriteLine("Child process started.");

        //Simulate the work of the main process
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("Main process is running...");
            Thread.Sleep(1000);
        }

        Console.WriteLine("Main process finished.");
    }

    // Event triggered when the main process exits
    static void OnProcessExit(object sender, EventArgs e)
    {
        Console.WriteLine("Main process exiting. Terminating child process...");
        KillChildProcess();
    }

    // The method for terminating the child process
    static void KillChildProcess()
    {
        if (childProcess != null && !childProcess.HasExited)
        {
            try
            {
                childProcess.Kill();
                Console.WriteLine("Child process terminated.");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Failed to terminate child process: {ex.Message}");
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.