2010-08-27 41 views
0

我有一個父程序調用工作控制檯應用程序,當發現更新並更新文件時,此應用程序通過參數從父進程獲取進程ID,然後調用WaitForExit()。 我想知道什麼是最好的方式然後重新啓動該過程,只需調用Proc.Start()是做到這一點的最佳方式? 例如:獲取父進程/重新啓動進程C#

static void Main(string[] args) 
{ 
    if (args.Length == 2) 
    { 
     int ParentID = Convert.ToInt16(args[1]); 
     Process ParentProc = Process.GetProcessById(ParentID); 
     ParentProc.WaitForExit(); 
     Console.WriteLine(UpdateHandler.GetUpdates(
      Path.GetDirectoryName(ParentProc.MainModule.FileName), args[0])); 
     ParentProc.Start(); 
    } 
    else 
     Console.WriteLine("Error: Invalid number of arguments."); 
} 

或者我應該創建一個新的進程來啓動它(我假設使用ParentProc.MainModule.FileName)

我也想知道是否有一個管理的方式來獲得父進程不通過參數?

謝謝:)

回答

1
+0

由於獲取文件名時,曾與64位和32位爭食的問題,不知道怎麼我沒有看到。我會把這個作爲可接受的答案,因此缺乏對主要問題的回答:Upvote。 – Blam 2010-08-27 18:38:37

+0

沒關係,我只是使用了一種解決方法,我會將此設置爲接受的答案,幫助您嘗試:) – Blam 2010-08-27 19:35:48

1

好沒關係,我通過將可執行文件路徑的更新程序來充當這兩個更新路徑和進程重新啓動這樣做。我這樣做的原因有兩個:

  1. 掛在傑羅姆的回答是緩慢的解決方案,這種方式速度更快。

  2. 我嘗試通過MainModule.FileName(儘管我已成立兩個項目爲86)