1

如果可执行文件从 DVD ROM 运行,“WaitForExit”将不会等待,但如果从 C: 驱动器或外部闪存驱动器运行,它会“等待”。任何线索为什么这个属性不起作用?

  1. 我在任务管理器上看到了这个过程
  2. 我正在使用 VB.NET 2010。

这是我的代码。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    Try
        Dim p As New Process
        With p
            With p.StartInfo
                .FileName = "D:\setup.exe" 'DVD DRIVE
                '.FileName = "F:\setup.exe" 'EXTERNAL DRIVE
            End With
            .EnableRaisingEvents = True
            .Start()
            .WaitForExit()
            .Close()
            .Dispose()
        End With
        p = Nothing
        MsgBox("END")

    Catch ex As Exception
        MsgBox(ex.Message)

    End Try

End Sub
4

1 回答 1

2

这是安装程序的一个特定功能,它们将自己复制到硬盘驱动器,因此当用户在忙于安装时弹出驱动器时它们不会失败。那会很糟糕,留下一个部分安装的应用程序。这种情况发生的频率比你想象的要多得多,这是一个经典的“哦,不!不是故意的!” 用户响应。特别是在 AutoRun 仍然有效的时代。

所以你看到的就是真正发生的事情。该过程实际上确实退出了,就在它开始在硬盘上复制之后。当然,您对此无能为力。在它退出后试图找回它是一种解决方法。

于 2013-08-31T00:21:29.170 回答