2010-08-27 35 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)