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

时间:2011-09-06 15:03:36

标签: c# .net 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();
}

有可能这样做吗?

3 个答案:

答案 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       
}