我正在尝试编写一个简单的程序,它有两个方法,一个启动一个进程,一个启动同一个进程.如:
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方法的文档.
我想你在找Process.Kill().
你真的不需要一个StopProc()方法,你可以直接写proc.Kill().
但是,通常不建议您以这种残酷的方式终止进程.这样做可以使共享对象处于未定义状态.如果你能找到一种方法来合作关闭这个首选的过程.