C# 如何停止进程。从c开始python代码的进程#

C# 如何停止进程。从c开始python代码的进程#,c#,python,process,environment-variables,exe,C#,Python,Process,Environment Variables,Exe,在C#应用程序中,我运行了一个python控制台应用程序exe文件,其中包含环境变量路径的进程: private void button1_Click(object sender, EventArgs e) { var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "folder\\python.exe"); Process.Star

在C#应用程序中,我运行了一个python控制台应用程序exe文件,其中包含环境变量路径的进程:

private void button1_Click(object sender, EventArgs e)
{
    var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "folder\\python.exe");   
    Process.Start(filePath); 
}
我希望停止此过程,并通过单击按钮或任何其他条件关闭控制台,但不确定我做错了什么:

private void button2_Click(object sender, EventArgs e)
{
    var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "folder\\python.exe");
    var process = Process.Start(filePath);
    process.Kill();
}

在第二次单击按钮时,您将启动一个新进程(并立即终止它),而不是停止第一次单击按钮时启动的进程。要停止从第一次单击按钮开始的进程,您需要存储在变量中创建的
进程
对象,然后在单击第二个按钮时对该对象调用
Kill()
方法

这是一个非常简单的示例(请注意,每次按下
按钮1
,它都会将新创建的流程分配给
runningProcess
变量)


你好它应该会起作用。我做了与您展示的完全相同的操作,但什么都没有,流程仍在运行您是否在Task Manager中监控了您的流程?单击第二个按钮后,您应该会看到Python脚本的过程消失。但是,如果脚本打开/使用其他资源,则在脚本被终止时,这些资源可能不会正确关闭/释放。它位于任务管理器中,并且在单击任务管理器列表中的第二个按钮后消失,python进程没有任何自己实现到C或从C的输出或输入,除了读取和写入文本文档之外,此执行在过程中并不经常发生,而且在按下第二个按钮时,肯定不会执行此部分实现。但控制台窗口已打开,进程正在运行。如果在第二次单击按钮后,它从任务管理器中消失,则表示进程已终止。如果脚本有时写入文本文档,但在单击“终止”按钮后没有写入,这也应该表明它已被终止(如果未终止,它仍将写入文本文档,即使在单击按钮后也是如此),它在单击按钮后消失,并立即出现在任务管理器列表中,没有什么可以再运行它了。它仍然被写入文本文档中
public class FormClass
{
    Process runningProcess;

    public FormClass()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "folder\\python.exe");   
        runningProcess = Process.Start(filePath); 
    }

    private void button2_Click(object sender, EventArgs e)
    {
        if(!runningProcess.HasExited)
        {
            runningProcess.Kill();
        }
    }
}