【问题标题】:Handling OCX errors in VFP (FoxPro)在 VFP (FoxPro) 中处理 OCX 错误
【发布时间】:2011-07-21 23:57:42
【问题描述】:

我有一个 ocx,在 vfp9 中调用其中一个方法时有时会导致“内部应用程序错误”。

我尝试过使用错误并尝试/​​捕获。对于这两者,我没有收到错误,而是收到 Microsoft Visual ForPro 遇到问题并需要关闭.... 发送错误报告/不发送对话框。

这就是我的代码的样子。

关于错误代码(注意我从来没有看到等待窗口):

LOCAL lcOnError
PUBLIC glErrorResult
glErrorResult = .F.
lcOnError = ON('ERROR')
ON ERROR glErrorResult = .T.

This.oOCXControl.Method()

IF glErrorResult
  WAIT WINDOW 'error'
ENDIF
ON ERROR &lcOnError
RELEASE glErrorResult

try/catch 代码(同样,我从来没有看到等待窗口):

Local oError as Exception
Try
  This.oOCXControl.Method()
Catch to oError When .T.
  WAIT WINDOW 'error'
EndTry

还有什么我可以尝试处理错误以防止我的应用崩溃的吗?

【问题讨论】:

  • 你在处理哪个 ocx...

标签: foxpro ocx visual-foxpro


【解决方案1】:

所以你有一个行为不端的 OCX 控件。我假设您已经考虑过使用其他供应商的控件替换它或检查更新等选项。就能够处理错误而言,我不知道您可以做任何您尚未尝试过的事情。听上去,控制太离谱了,它正在破坏 VFP 继续执行的能力。

考虑您是如何使用控件的,并找出您可能违反制造商规则的地方。特别是寻找你可能会鼓励控件泄漏内存的地方。很可能是在控件中构建了一个问题,最终在遇到这行代码时会爆裂。

例如,我曾使用过具有一定内存限制的旧网格控件。如果尝试向网格中添加太多项目,它并没有引发错误,而是似乎将内存泄漏到 VFP 的处理空间中,并最终导致应用程序崩溃。简单的答案是不要尝试向网格中添加大量项目。

【讨论】:

    【解决方案2】:

    您是否考虑过运行方法on a different thread?它至少可以阻止您的应用崩溃。

    【讨论】:

    • 这可能会导致解决方案,但请注意不要仅仅将问题隐藏在后台线程上。导致 VFP 关闭的情况表明存在潜在的严重问题。
    猜你喜欢
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2016-08-18
    相关资源
    最近更新 更多