Программы C # Monitor, периодически основанные на PID - PullRequest
0 голосов
/ 17 июня 2010

Заранее спасибо за ваши идеи и вклад.

Я хотел бы периодически проверять, запущена ли сторонняя программа в системе пользователя из моей программы. В настоящее время я запускаю программу в C # следующим образом:

        String plinkConString = ""; // my connection string
        Process plink = Process.Start(utilityPath + @"\putty.exe", plinkConString);
        int plinkProcessId = plink.Id;

Я запускаю программу и беру ее pid в среде Windows. Так как Putty / PLink может в какой-то момент отключиться от своего SSH-сервера и закрыть его, как лучше всего отслеживать, как этот процесс выполняется в коде?

Есть ли лучший способ запустить эту программу, чтобы отслеживать ее успех или неудачу?

Ответы [ 2 ]

1 голос
/ 17 июня 2010

Если вы хотите проверить, запущен ли еще процесс, вы можете проверить свойство HasExited:

Process plink = Process.Start(utilityPath + @"\putty.exe", plinkConString);
....
bool isRunning = plink.HasExited;

Следующий код проверит, работает ли putty. Работает также, если программа была запущена пользователем:

bool isRunning = Process.GetProcessesByName("putty").Length > 0;
0 голосов
/ 17 июня 2010

Вы можете использовать Process.WaitForExit() или Process.WaitForExit(int), или использовать обработчик событий Process.Exited.Вас также может заинтересовать Monitor, если вы хотите более сложное поведение, чем это.

...