在C#.NET中启动和停止进程

Mag*_*sen 10 .net c# process

我正在尝试编写一个简单的程序,它有两个方法,一个启动一个进程,一个启动同一个进程.如:

public Process StartProc(string procname)
{
    Process proc = new Process();
    proc.StartInfo.FileName = procname;
    proc.Start();
    return proc;
}

public void StopProc(Process proc)
{
    proc.Close();
}
Run Code Online (Sandbox Code Playgroud)

有可能这样做吗?

Jus*_*tin 13

是的,你所追求的方法是Kill,而不是Close:

public void StopProc(Process proc)
{
    proc.Kill();
}
Run Code Online (Sandbox Code Playgroud)

这将强制关闭进程 - 如果可能,最好通过请求应用程序关闭主窗口来通知应用程序关闭:

public void StopProc(Process proc)
{
    proc.CloseMainWindow();
}
Run Code Online (Sandbox Code Playgroud)

这允许应用程序执行清理逻辑(例如保存文件),但是如果它选择忽略请求则可以允许进程继续运行,并且如果进程没有主窗口则不会执行任何操作(例如,控制台应用程序)

有关更多信息,请参阅有关该Process.CloseMainWindow方法的文档.


Dav*_*nan 5

我想你在找Process.Kill().

你真的不需要一个StopProc()方法,你可以直接写proc.Kill().

但是,通常不建议您以这种残酷的方式终止进程.这样做可以使共享对象处于未定义状态.如果你能找到一种方法来合作关闭这个首选的过程.