2

它可以在我的电脑上运行,但是当我放入另一台机器时出现错误“源:系统进程已退出,因此请求的信息不可用”& exe 没有出来。哪位有经验的大哥可以帮忙?赞赏!

        p = New Process
            With p
                .EnableRaisingEvents = True
                .StartInfo.FileName = Application.StartupPath & "\EXE\CDMObjectSelection\CDMObjectSelection.exe"
                .StartInfo.Arguments = strArgs
                .StartInfo.ErrorDialog = True
                .StartInfo.WindowStyle = ProcessWindowStyle.Normal
                .StartInfo.UseShellExecute = True
                .Start()
            End With

            p.WaitForInputIdle()

            While (ginthwnd = IntPtr.Zero)
                System.Threading.Thread.Sleep(100)
                p.Refresh()
                ginthwnd = p.MainWindowHandle
            End While
4

2 回答 2

1

如果您在调试器中遵循此代码或将其包装在一个try/catch块中,您可能会发现异常发生在该行上p.WaitForInputIdle()。正如MSDN 所述:当进程已经退出时抛出此异常。尝试将您的电话包装在 a 中try/catch并处理InvalidOperationException.

MSDN 还说“如果进程没有消息循环,WaitForInputIdle 会抛出 InvalidOperationException”。确保你调用的进程有一个消息循环。

有关如何正确关闭进程的信息,请参阅此答案。

于 2013-08-28T04:04:40.407 回答
0

确保在正确的架构上构建应用程序。例如,如果您将应用程序构建为 64 位应用程序并在 32 位操作系统上运行,您将收到此错误。如果可以,请将您的应用程序构建为 32 位和 64 位(任何 CPU),您无需担心。

于 2020-09-03T08:10:30.887 回答