Process.Start运行两次

时间:2017-01-04 12:03:31

标签: c# windows

我面临一个奇怪的问题。我有一个可执行文件(Exe1),我在RunOnce密钥中注册(HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ RunOnce) Exe1在下次重启时运行。在Exe1中,我正在使用Process.Start()来启动另一个可执行文件(Exe2)。语法是

string Installer = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Exe2.exe";
Process.Start(Installer);

奇怪的是,Exe2有时启动两次,有时不启动。我无法弄清楚如何。 Exe1仅在启动时启动一次。我敢肯定 - 我正在采取这些措施。

  • 如果在调用Process.Start()之前存在互斥锁,我正在使用互斥锁并退出Exe1。
  • 我在调用Process.Start()之前写了一个日志 - 它也只记录了一次
  • 我还通过遍历Process.GetProcesses()
  • 来检查Exe2是否已经在Process.Start()之前运行

尽管如此,Exe2还是推出了两次。当它在重启时从RunOnce启动时会发生这种情况。如果我直接启动Exe1,就不会发生这种情况。

感谢任何帮助或有用的信息

1 个答案:

答案 0 :(得分:1)

我会谈到我遇到的问题,因为它可能与您的问题足够接近。首先,我在预期我的进程开始的任何地方都设置了一个断点。如果在没有我继续的情况下启动流程,那么我的代码会在其他地方触发该流程。

Process myProcess = Process.Start(startInfo);
myProcess.Start();

我在第二行放置了一个断点,但显然我在第一行触发了该过程。如果代码分散,那些奇怪的(恼人的)简单错误有时很难被发现。希望有帮助或其他任何人解决这个问题。