Обработка событий
21.01.2014 15:59
#
При работе с ИБ8 на сервере терминалов (удаленный рабочий стол) не обрабатывается (или не генерируется) событие "ожидание ввода". Прошу помочь с настройками или разъяснить работу с "ожиданием ввода" в режиме "удаленного рабочего стола" ("сервера терминалов").
С уважением, Зайцев М.В.
- 14 просмотров
Забыл уточнить: ИБ8 УСН сетевая (8.717), ОС сервера - MS Windows Server 2003 R2. При работе в локальной сети (MS Windows 7 Pro) все идет нормально, событие генерируется и успешно обрабатывается.
При переносе работы оператора на терминальный сервер событие "ожидание ввода" не срабатывает.
Не могу понять в чем причина. В настройках установил соответствующую событию библиотеку и функцию-
обработчик. Может быть нужна определенная настройка в ОС сервера или дополнительные права в сеансе оператора.
Функция-обработчик указывается в ib.ini [AppFunctions] IdleFunc=...
Файл ib.ini должен лежать в рабочей папке программы.
При использовании терминального сервера, скорее всего, рабочие папки у разных пользователей различаются.
Проверьте содержимое ib.ini в папке, которую показывает Справка->Компьютер как текущую.
Здравствуйте!
Проверил рабочую папку программы. Файл ib.ini лежит на месте и его содержимое соответствует вашему совету. Но событие "ожидание ввода" к моему глубокому сожалению не работает. Если это поможет, то могу дать адрес, логин и пароль на сервер в режим "Администратор" (по указанному вами почтовому адресу).
Если "повезет", то такое поведение может возникнуть если работа с ИБ попадет на период ~25 дней с момента загрузки компьютера.
Связано с переполнением 32 битного таймера (функция GetTickCount).
Т.е. время последнего вызова запоминается как большое положительное число (2147483647),
а это время + 10 сек. получается большим по модулю отрицательным числом (-2147473647).
Все - на следующие 25 дней точно остались без обработки...
Должно устраняться перезапуском ИБ.
Если не устраняется, то точно дело не в этом.
Что функция-обработчик делает и как делается вывод, что она не вызывается?
Если указать в качестве обработчика тривиальную функции, вызывающую СООБЩЕНИЕ, например?
Добрый день!
Создал и проверил "тривиальную функцию" - ПРИВЕТ! Функция состоит из четырех строк:
ФУНКЦИЯ ТИП_ЛОГИКА : ПРИВЕТ
СООБЩЕНИЕ("ПРИВЕТ!")
ПРИВЕТ=ДА
КОНЕЦ_ФУНКЦИИ
Результат - не работает (вне зависимости от времени ожидания).
Спасибо за советы!
Завтра буду "мучить" сервер.
Нашел, что время последнего вызова инициализируется нулем при старте программы.
Значит, когда счетчик GetTickCount ушел в отрицательную область, то все - 25 дней без вызова...
В коде я поправил инициализацию и сравнение с учетом переполнения счетчика.
А сейчас для Вас временный способ решения - перезагрузить сервер.
Перезагрузил сервер - все работает как часы! Видимо в самом деле счетчик.
Спасибо огромное!
С уважением, Зайцев М.В..