2016-09-22 6 views
0

Как подождать, пока PID (не запущенный из самой программы) больше не существует? Я хочу, чтобы моя программа получала PID из внешней программы через параметр командной строки и просто ждала ее выхода и затем что-то сделала.C# ждать выхода внешнего PID

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

я собирался что-то вроде этого, но это, очевидно, не работает ..

Process[] pname = Process.GetProcessById(7860); 
      if (pname.Length == 0) 
       Console.WriteLine("nothing"); 
      else 
       Console.WriteLine("run"); 

Как это может быть достигнуто?

+0

@RaymondChen: То не точно так же, как и в ссылочного вопросе они ждут процесс начался в том же коде. – wonko79

+0

@ wonko79: Часть, не адресованная в дубликат Q & A, является невозможной частью. Тот, где случайный процесс волшебным образом находит стандартные ручки ввода-вывода заинтересованного приложения, как раз в нужное время, и использует их для соединения своего идентификатора процесса. – IInspectable

+0

[Этот ответ] (http://stackoverflow.com/a/6723758/902497) является конкретным дубликатом. «Создайте/Присоединитесь к процессу, а затем используйте« WaitForExit() »для блокировки до его выхода или используйте событие« OnExited », если вы не хотите, чтобы ваше приложение блокировалось, пока оно ждет выхода приложения». Этот конкретный вопрос используется в случае «прикрепления». –

ответ

0

Вы можете сделать это легко, написав:

var p = Process.GetProcessById(7860); 
p.WaitForExit(); 
+0

Вы тот же @ wonko79, который [просто пожаловался] (http://stackoverflow.com/questions/39641494/c-sharp-wait-for-external-pid-to-exit/39641632#comment66586778_39641494), что предлагаемый дубликат не будет решать вопрос? Только написать ответ, который - по тому же стандарту - тоже не затрагивает вопрос. Я не понимаю эту линию рассуждений. Если вы еще не выиграли, конечно. – IInspectable

Смежные вопросы