C#:运行进程,然后使用按钮终止它

C#:运行进程,然后使用按钮终止它,c#,executable,kill,C#,Executable,Kill,我希望你能帮我做这个,我的C#已经生锈了 当窗体加载时,我正在运行一个可执行文件 private void Form1_Load(object sender, EventArgs e) { ProcessStartInfo exe = new ProcessStartInfo(); exe.Arguments = "arguments"; exe.FileName = "file.exe"; Process.Star

我希望你能帮我做这个,我的C#已经生锈了

当窗体加载时,我正在运行一个可执行文件

    private void Form1_Load(object sender, EventArgs e)
    {
        ProcessStartInfo exe = new ProcessStartInfo();
        exe.Arguments = "arguments";
        exe.FileName = "file.exe";
        Process.Start(exe);
    }
我想用一个按钮终止这个过程,但我不知道如何实现

    private void button1_Click(object sender, EventArgs e)
    {

    }

谢谢。

Process.Start
返回类型为
Process
的对象。您可以将其保存到变量中,然后使用方法
Kill
,该方法
会立即停止关联的进程
()

例如,在
Form1
级别声明一个字段:

class Form1
{
    private Process process;

    private void Form1_Load(object sender, EventArgs e)
    {
        //running notepad as an example
        process = Process.Start("notepad"); 
    }

    //and then at button handler kill that process
    private void button1_Click(object sender, EventArgs e)
    {
        //consider adding check for null
        process.Kill();
    }
}
试试这个

try
{
Process [] proc Process.GetProcessesByName("notepad");
proc[0].Kill();
}
您应该调用执行进程有序终止并关闭所有窗口的。与此相反,它会导致异常终止。对于具有用户界面的应用程序,最好使用CloseMainWindow

process =  Process.Start(exe);//in form load set field

private void button1_Click(object sender, EventArgs e)
{
   process.CloseMainWindow();
}
显示有关异步行为和其他相关细节的重要信息

Kill强制终止进程,而仅关闭MainWindow 要求终止合同。当使用图形界面的进程 执行时,其消息循环处于等待状态。消息循环 每次由发送到进程的Windows消息时执行 操作系统。调用CloseMainWindow发送关闭请求 在格式良好的应用程序中,主窗口关闭子窗口 windows并撤消应用程序的所有正在运行的消息循环。这个 通过调用CloseMainWindow退出进程的请求不强制 应用程序无法退出。应用程序可以请求用户验证 在退出之前,也可以拒绝退出。强制申请 退出,使用Kill方法。CloseMainWindow的行为是 与用户使用关闭应用程序主窗口的操作相同 系统菜单。因此,请求通过关闭退出流程 主窗口不会强制应用程序立即退出


等.

进程会实现你想要的吗?如果你也是“其他”进程的作者,你可能想考虑用户同步对象,例如一个命名的,来传递一个停止请求。第二个进程可以让线程等待事件,并在退出之前执行任何适当的操作。谢谢,它正在工作。但是,如果应用程序被强制关闭,有没有办法终止进程?