2016-09-22 62 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:在重复问答中未涉及的部分是不可能的部分。一个随机进程在恰当的时间神奇地找到感兴趣的应用程序的标准I/O句柄,并使用它们将进程ID传入。 – 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),建议重复不会解决这个问题吗?只是发布一个答案 - 按照相同的标准 - 也不能解决问题。我没有得到这样的推理。当然,除非你是另一个wonko79。 – IInspectable