Назад | Перейти на главную страницу

Предотвратить автоматическое завершение работы устаревшего приложения ERP на Server 2012R2.

Предыстория: устаревшее приложение ERP FoxPro в 2012 R2

У нас есть устаревшее приложение ERP, которое нам нужно продолжать работать еще 6 месяцев. Само приложение ERP было написано на FoxPro, продукте Microsoft, выпуск которого прекращен. Среда FoxPro является однопоточной по дизайну и не может быть расширена до многопоточной. Таким образом, любые программы, написанные на языке FoxPro, также будут по своей сути однопоточными; приложение ERP «имитирует» многопоточность, выполняя обработку для одного окна за раз, используя любое окно, имеющее фокус. Пока мы можем модифицировать программное обеспечение (оно идет с исходным кодом) сейчас нет и никогда не будет метода для безопасной многопоточности программы FoxPro, предлагаемый способ решения аналогичной проблемы в Stackoverflow. Это не проблема, которую можно решить программированием.

Запуск на 2008R2 не вариант

Приложение запускается на установке Server 2012r2 с использованием Citrix для терминальных служб; хотя поставщик приложения 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 минут.