【问题标题】:Starting and stopping a process in C# .NET在 C# .NET 中启动和停止进程
【发布时间】:2011-09-06 15:03:36
【问题描述】:

我正在尝试编写一个简单的程序,它有两种方法,一种是启动一个进程,另一种是取消同一个进程。 如:

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

public void StopProc(Process proc)
{
    proc.Close();
}

这样可以吗?

【问题讨论】:

    标签: c# .net process


    【解决方案1】:

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

    public void StopProc(Process proc)
    {
        proc.Kill();
    }
    

    这将强制关闭进程 - 如果可能的话,最好是通过请求应用程序关闭主窗口等方式向应用程序发出关闭信号:

    public void StopProc(Process proc)
    {
        proc.CloseMainWindow();
    }
    

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

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

    【讨论】:

      【解决方案2】:

      我想你正在寻找Process.Kill()

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

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

      【讨论】:

        【解决方案3】:

        通过启动进程,您可以获得该进程的唯一 ID,然后您可以像这样杀死它:

        public static int Start(string processName)
            {
                var process =
                    Process.Start(processName);
                return
                    process.Id;
            }
        
            public static void Stop(int processId)
            {
                var process =
                    Process.GetProcessById(processId);
                process.Kill();
            }
        

        【讨论】:

          猜你喜欢
          • 2011-12-30
          • 1970-01-01
          • 1970-01-01
          • 2011-12-14
          • 1970-01-01
          • 1970-01-01
          • 2023-03-12
          • 1970-01-01
          • 2017-12-12
          相关资源
          最近更新 更多