我使用National Instruments LabWindows / CVI开发了一个软件,并在带有4GB RAM的Windows 7 32位PC中安装了.exe。 当我运行我的软件时,有时会出现以下错误。
“程序导致程序无法正常运行.Windows将关闭程序并在解决方案可用时通知您”
这是非常随机的,有时这个错误永远不会出现。
请有人帮我理解这个问题。我已多次查看我的软件代码,并且我确信我在软件中没有做任何错误导致出现此错误。
这与windows有什么关系吗?我该如何解决这个问题?非常感谢帮助。
由于 Sujith Rajan
答案 0 :(得分:0)
我多次遇到过类似的问题。
即使是简单的程序,例如用于从用户获取输入的控制台应用程序,并在处理完屏幕后显示一些数据,也可能发生这种情况。
通常,这表示您的计算机无法为此程序提供足够的资源,或者您的代码中存在错误。
由于以下原因,它可能是随机的:
处理器可能已经忙于执行几项要求苛刻的任务,因此需要关闭您的程序。在其他时候,当它运作良好时,资源可能可用。
您的程序可能只有在满足某些条件时才会在运行时出现某个逻辑错误。 (例如错误的条件陈述)
您的程序可能会有无限循环。
Windows怀疑您的文件对系统有害(出于某种原因)。
答案 1 :(得分:0)
有youtube视频告诉您设置数据执行保护以解决。这是一只红鲱鱼。它也有潜在危害,特别是如果你正在运行旧的dos应用程序(因为你必须出于某种原因)。
如果程序抛出任何类型的未处理异常,您将收到此错误消息。
如果您使用此代码段落启动它...
Dim psi As New ProcessStartInfo(pathToTarget)
Dim p As Process = Process.Start(psi)
Dim bIfinished As Boolean = p.WaitForExit(itimeout)
If bIfinished = False Then
p.Kill()
End If
iretVal = p.ExitCode
pathToTarget 是目标exe / bat(TARGET)文件的完整路径
超时是一个表示毫秒的整数。 2分钟将是2 * 60 * 1000
如果程序自行结束,bfinished 将成立。注意 - 这不是返回码。如果未能完成(在此示例中为2分钟)bFinished将为假。
可以检查p.ExitCode 以查看TARGET返回的内容。通常,0表示成功,其他任何内容都是错误代码。
这是OP提到的消息框,(autoAging碰巧是我用来演示这个的exe)。它还说'XYZ已停止工作'。谷歌需要知道这一点!
请注意,代码将继续在您的应用中运行,以便您可以根据需要进行清理。单击或不单击“关闭程序”对我能够分辨的主机没有影响。
如果您拥有TARGET的代码,请确保处理所有错误并返回适当的代码。这样你的调用应用程序(HOST)就可以知道如何做出反应。 你也避免使用这个msgbox。
如果你没有代码给TARGET,你只需要尽力而为。如果有一些输出你可以随便检查,那就做。否则我会假设失败并继续这个假设 此消息框确实消耗资源。虽然它不是一个大问题,但它们中的足够多会使你的盒子无法运行。