我有一个调用工作者控制台应用程序的父程序,当发现更新文件时,此应用程序通过参数从父进程获取进程ID,然后调用WaitForExit()。 我想知道的是,然后重新启动该过程的最佳方法是什么,只需调用Proc.Start()是最好的方法吗? 例如:
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)
我还想知道是否有一种托管方式来获取父进程而不是通过参数?
谢谢:)
答案 0 :(得分:1)
答案 1 :(得分:1)
Ok没关系,我通过将可执行路径传递给更新程序来充当更新路径和重新启动的过程。我这样做有两个原因:
与杰罗姆的答案相关联的解决方案很慢,这种方式更快。</ p>
- 醇>
尝试通过MainModule.FileName获取文件名时遇到了64位和32位冲突的问题(即使我已将这两个程序都设置为x86)