我正在尝试编写一个简单的程序,它有两个方法,一个启动一个进程,一个启动同一个进程。 如:
public Process StartProc(string procname)
{
Process proc = new Process();
proc.StartInfo.FileName = procname;
proc.Start();
return proc;
}
public void StopProc(Process proc)
{
proc.Close();
}
有可能这样做吗?
答案 0 :(得分:13)
是的,您所使用的方法称为Kill
,而不是Close
:
public void StopProc(Process proc)
{
proc.Kill();
}
这将强制关闭进程 - 如果可能,最好通过请求应用程序关闭主窗口来通知应用程序关闭:
public void StopProc(Process proc)
{
proc.CloseMainWindow();
}
这允许应用程序执行清理逻辑(例如保存文件),但是如果它选择忽略请求则可以允许进程继续运行,如果进程没有主窗口则不会执行任何操作(对于使用控制台应用程序的示例。
有关详细信息,请参阅Process.CloseMainWindow
方法的文档。
答案 1 :(得分:5)
我认为您正在寻找Process.Kill()
。
您真的不需要StopProc()
方法,只需直接编写proc.Kill()
即可。
但是,通常不建议您以这种残酷的方式终止进程。这样做可以使共享对象处于未定义状态。如果你能找到一种方法来合作关闭这个首选的过程。
答案 2 :(得分:1)
通过开始该过程,您可以获取该过程的唯一ID,然后可以像这样杀死它:
[HttpGet]
[Route("api/Exchange/Groups/Members/{samAccountName}")]
public HttpResponseMessage GetMembers(string samAccountName)
{
//Query from Exchange
}