繁体   English   中英

C#:运行进程,然后使用按钮将其杀死

[英]C#: Run process and then kill it using a button

我希望您可以帮助我,因为我的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的对象。 你可以将它保存到变量中,然后使用方法KillImmediately stops the associated processmsdn

例如,在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();
    }
}

您应该调用Process.CloseMainWindow ,它有序地终止进程并关闭所有窗口。 而不是Process.Kill导致异常终止。 CloseMainWindow更适用于具有用户界面的应用程序。

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

private void button1_Click(object sender, EventArgs e)
{
   process.CloseMainWindow();
}

MSDN上注释揭示了有关异步行为的重要信息以及其他相关细节。

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

等等...

尝试这个

try
{
Process [] proc Process.GetProcessesByName("notepad");
proc[0].Kill();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM