Мы сталкиваемся с проблемой с нашим приложением, если оно выполняется в среде Citrix. Приложение представляет собой клиент-серверное приложение, разработанное в Delphi и .NET. База данных в бэкэнде - Oracle.
Многие клиенты имеют приложение, работающее в среде Citrix / Terminal Server. В общем то работает. Теперь проблема:
Некоторые из них получают большое количество окон "Не отвечает" в сочетании с замерзающим белым экраном. Насколько я понимаю, это делается автоматически окнами в случае, если приложение больше не реагирует на цикл сообщений (в данное время).
Обычно это происходит в том случае, если выполняется длительная операция с базой данных или если какая-то операция пользовательского интерфейса занимает больше времени. Значение по умолчанию здесь 5s (hungapptimeout).
Чтобы избежать «не отвечающих» и зависаний, мы уже называем PeekMessage (Msg, 0, 0, 0, PM_NOREMOVE) в Windows API.
При локальном запуске это работает довольно хорошо, чтобы избежать поведения «Не отвечает» для длительных операций.
На терминальном сервере (или, по крайней мере, в некоторых конфигурациях) это выглядит так, что это вообще не рассматривается.
Мы также безуспешно пытались увеличить / изменить время зависания приложения на серверах терминалов (см .: https://blogs.msdn.microsoft.com/meason/2010/02/04/hungapptimeout).
- Есть что-нибудь, что мы должны принять во внимание? -> Конечно, это может быть проблема в том, что на этом сервере просто много пользователей, и ресурсы уже могут быть ограничены, но у нас нет никаких признаков, указывающих на что-то подобное.
- Существуют ли специальные настройки в Citrix для настройки этого поведения.
Надеюсь, что кто-то может помочь или, по крайней мере, может дать подсказку.