2016-09-22 1 views
0

Comment puis-je attendre que le PID (non démarré à partir du programme lui-même) n'existe plus? Je veux que mon programme obtienne un PID d'un programme externe par l'intermédiaire du paramètre de ligne de commande et attende juste qu'il sorte pour faire quelque chose.C# attente du PID externe pour quitter

Je l'ai cherché, mais tout ce que j'ai pu trouver étaient des exemples où le processus a été démarré par le programme C# lui-même. C'est facile à gérer ..

j'allais avec quelque chose comme ça, mais il ne fonctionne évidemment pas ..

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

Comment cela peut-il être accompli?

+0

@RaymondChen: Cest pas exactement la même chose que dans la question fait référence, ils sont en attente d'un processus a commencé dans le code même. – wonko79

+0

@ wonko79: La partie non abordée dans le Q & A en double est la partie impossible. Celui où un processus aléatoire trouve par magie les poignées d'E/S standard de l'application, juste au bon moment, et les utilise pour canaliser leur identifiant de processus. – IInspectable

+0

[Cette réponse] (http://stackoverflow.com/a/6723758/902497) est le doublon spécifique. "Créez/Attachez au processus puis utilisez WaitForExit()' pour bloquer jusqu'à ce qu'il ait quitté, ou utilisez l'événement 'OnExited' si vous ne souhaitez pas que votre application se bloque pendant l'attente de la sortie de l'application." Cette question particulière utilise le cas "attacher". –

Répondre

0

Vous pouvez le faire facilement en écrivant:

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

Êtes-vous le même @ wonko79, que [se plaindre] (http://stackoverflow.com/questions/39641494/c-sharp-wait-for-external-pid-to-exit/39641632#comment66586778_39641494) que le doublon proposé ne répondrait pas à la question? Seulement pour poster une réponse qui - par cette même norme - ne répond pas non plus à la question. Je ne comprends pas ce raisonnement. Sauf si vous êtes un autre wonko79, bien sûr. – IInspectable