2

我希望你能帮我解决这个问题,我的 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)
    {

    }

谢谢。

4

3 回答 3

5

Process.Start返回一个类型的对象Process。您可以将其保存到变量中,然后使用该Kill方法Immediately 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();
    }
}
于 2013-11-13T02:54:04.033 回答
2

您应该调用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 的行为与用户关闭应用程序的行为相同' 使用系统菜单的主窗口。因此,通过关闭主窗口来退出进程的请求不会强制应用程序立即退出。

ETC...

于 2013-11-13T03:10:48.663 回答
0

尝试这个

try
{
Process [] proc Process.GetProcessesByName("notepad");
proc[0].Kill();
}
于 2013-11-13T03:06:51.693 回答