【问题标题】:Getting parent process / Restarting a process C# [duplicate]获取父进程/重新启动进程 C# [重复]
【发布时间】:2010-08-27 18:24:43
【问题描述】:

我有一个父程序,它在发现更新文件时调用工作控制台应用程序,该应用程序通过参数从父程序获取进程 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)

我也想知道是否有一种托管方式来获取父进程而不是通过参数?

谢谢:)

【问题讨论】:

    标签: c# process


    【解决方案1】:

    【讨论】:

    • 谢谢,不知道我怎么没看到。我会将此作为已接受的答案,缺乏对主要问题的答案,因此:Upvote。
    • 没关系,我只是使用了一种解决方法,我会将其设置为尝试提供帮助的公认答案:)
    【解决方案2】:

    好吧,没关系,我通过将可执行路径传递给更新程序来充当更新路径和重新启动的进程。我这样做有两个原因:

    1. 杰罗姆的答案中链接的解决方案很慢,这种方式更快。

    2. 尝试通过 MainModule.FileName 获取文件名时遇到 64 位和 32 位冲突的问题(即使我已将两个程序都设置为 x86)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 2017-03-20
      • 1970-01-01
      相关资源
      最近更新 更多