2016-09-22 39 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