Vb.net “错误”;来源:系统进程已退出,因此请求的信息不可用;

Vb.net “错误”;来源:系统进程已退出,因此请求的信息不可用;,vb.net,process,Vb.net,Process,它在我的电脑中工作,但当我把它放到另一台机器上时,我得到一个错误“来源:系统进程已退出,因此请求的信息不可用”&exe没有出现。有经验的兄弟能帮忙吗?谢谢 p = New Process With p .EnableRaisingEvents = True .StartInfo.FileName = Application.StartupPath & "\EXE\CDMObjectSe

它在我的电脑中工作,但当我把它放到另一台机器上时,我得到一个错误“来源:系统进程已退出,因此请求的信息不可用”&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

如果您在调试器中遵循此代码,或将其包装在
try/catch
块中,您可能会发现异常发生在
p.WaitForInputIdle()
行。As:当进程已退出时引发此异常。尝试用
Try/catch
包装您的呼叫,并处理
invalidoOperationException

MSDN还表示“如果进程没有消息循环,WaitForInputdle会抛出InvalidOperationException”。确保正在调用的进程具有消息循环


了解如何正确关闭进程。

确保在正确的体系结构上构建应用程序。 例如,如果您将应用程序构建为64位应用程序并在32位操作系统上运行,则会出现此错误。如果可以,将应用程序同时构建为32位和64位(任何CPU),您就不必担心它了