Запуск и остановка процесса в C # .NET - PullRequest
10 голосов
/ 06 сентября 2011

Я пытаюсь написать простую программу, в которой есть два метода: один запускает процесс, а другой - тот же процесс. как в:

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 ]

13 голосов
/ 06 сентября 2011

Да, метод, который вам нужен, называется Kill, а не Close:

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

Это принудительно закроет процесс - когда это возможно, желательно сообщить о закрытии приложения, например, запросив, чтобы приложение закрыло главное окно:

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

Это позволяет приложению выполнять логику очистки (например, сохранение файлов), однако может позволить процессу продолжать работу, если оно решит игнорировать запрос, и ничего не будет делать, если у процесса нет главного окна (для пример с консольным приложением).

Для получения дополнительной информации см. Документацию по методу Process.CloseMainWindow.

5 голосов
/ 06 сентября 2011

Я думаю, что вы ищете Process.Kill().

Вам не нужен StopProc() метод, вы можете просто написать proc.Kill() напрямую.

Тем не менее, обычно не рекомендуется завершать процессы таким жестоким способом. Это может оставить общие объекты в неопределенном состоянии. Если вы можете найти способ закрыть процесс, который предпочтительнее.

1 голос
/ 23 октября 2018

Запустив процесс, вы можете получить уникальный идентификатор этого процесса, а затем убить его следующим образом:

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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...