背景:2012R2 上的 FoxPro 旧版 ERP 应用程序

背景:2012R2 上的 FoxPro 旧版 ERP 应用程序

背景:2012R2 上的 FoxPro 旧版 ERP 应用程序

我们有一个遗留的 ERP 应用程序,需要继续运行 6 个月。ERP 应用程序本身是用 FoxPro 编写的,FoxPro 是一款已停产的 Microsoft 产品。FoxPro 环境在设计上是单线程的,无法扩展为多线程。进一步说,任何用 FoxPro 语言编写的程序也将是固有的单线程;ERP 应用程序通过每次处理一个窗口(使用具有焦点的任何窗口)来“伪造”线程。虽然我们可以修改软件(它附带源代码)现在没有,将来也不会有可以安全地对 FoxPro 程序进行多线程处理的方法,这是 Stackoverflow 中处理类似问题的建议方法。这不是一个可以通过编程解决的问题。

无法在 2008R2 上运行

该应用程序正在使用 Citrix 提供终端服务的 Server 2012r2 安装上运行;虽然 ERP 应用程序的供应商建议运行 Server 2008/2008r2,但无法运行 2008

  1. 我们无法升级,原因(冗长而复杂)我无法详述,
  2. Microsoft 不再积极销售 2008,也没有信誉良好的零售商可以购买该产品。因此我们强制使用这个环境。

应用程序未发布,仅发布桌面。

错误行为

了解了这些背景知识后,问题就简单了:应用程序随机“崩溃”,从用户会话中消失。没有致命错误对话框,没有崩溃消息,什么都没有。它只是消失了。我设法将其追溯到应用程序长时间无响应,这对于 FoxPro 来说实际上是正常的;当您使用该语言运行大型查询时,解释器可能会停止响应数十秒。显然,2012R2 认为 FoxPro 因此崩溃了,并自动关闭了该程序。这不是我们想要的行为,我们希望应用程序完成其长时间运行的查询并恢复正常运行。

这个假设得到了如下(经过清理的)事件日志条目的支持:

The program XXXX.exe version 0.0.0.0 stopped interacting with Windows and was closed. To see if more information about the problem is available, check the problem history in the Action Center control panel.
 Process ID: 3810
 Start Time: 01d1c0d181b3e14e
 Termination Time: 4294967295
 Application Path: \\{server}\{ERP share}\{ERP install directory}\XXXX.exe
 Report Id: 1a2c27bb-2cd5-11e6-80f2-141877520cd8
 Faulting package full name: 
 Faulting package-relative application ID: 

问题

我们如何让 Server 2012r2 在繁忙时不会因为遗留应用程序出现“冻结”而自动在短时间内关闭它?

一些不完全适合的注册表选项

我找到了以下注册表项,但它们似乎都不适用于这种情况(当然,除非其中一个确实适用,但 MS 再次未能完整记录它,这并不是说以前没有发生过这种情况):

仅供参考,为了让每个人都了解所涉及的延迟,我在 FoxPro 中运行的最长查询大约为 8 分钟。因此,无论答案是什么,它都应该考虑到长达 8 分钟无响应的可能性。

相关内容