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