它可以在我的电脑上运行,但是当我放入另一台机器时,我收到错误“来源:系统进程已退出,因此请求的信息不可用”& 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
答案 0 :(得分:0)
如果您在调试器中使用此代码或将其包装在try/catch
块中,您可能会发现异常发生在p.WaitForInputIdle()
行上。作为MSDN states:当进程已经退出时抛出此异常。尝试使用try/catch
打包并处理InvalidOperationException
。
MSDN还说“如果进程没有消息循环,WaitForInputIdle会抛出InvalidOperationException”。确保您正在调用的进程有一个消息循环。
See this answer了解如何正确关闭流程。
答案 1 :(得分:0)
确保在正确的体系结构上构建应用程序。 例如,如果将应用程序构建为64位应用程序并在32位操作系统上运行,则会出现此错误。如果可以,将您的应用程序构建为32位和64位(任何CPU),则无需担心。