On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 7457
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.07.23 10:48. Заголовок: Таймера в МиниГуи


Столкнулся с проблемой с новыми версиями МиниГуи с февральской...
Перестали работать таймера в программе. Их у меня 3 штуки в большой проге.
Сделал в 2015 и до этого работали без проблем.
1-таймер читает пользователей программы в журнале-dbf и выводит на главную форму,
2-таймер проверяет ключ HASP, 3-таймер каждые 5 минут передаёт записи на сайт в Postgres Sql

Я до этого считал, что если таймер не работает(выводит) что-то на форму, то достаточно запоминать/восстанавливать алиасы по которым работаешь в таймере с базами и всё, больше ничего не нужно.
Однако меня просветили, совсем недавно, что не всё так просто.
Блин прога работала 8 лет, а сейчас начала ВЕШАТЬСЯ после отработки таймера.
Формы открыты, по ним юзер тупо тыкается, а прога не реагирует... висит...
Даже закрыть программу нельзя - rdp протокол такого не разрешает наверное.
Нужно заходить админу на сервер и тупо снимать прогу юзера. Это не постоянно происходит, а по непонятному решению Винды.
Хрень какая то получается, чем больше знаешь и правишь свой код, тем больше ломается.
Можно выкинуть таймера совсем из программы, но это не наш метод !
Указали мне как правильно работать с таймером - пример SAMPLES\Advanced\Tsb_5Win
ВАЖНО ! При запуске одного таймера, все другие надо выключать... Прога 8 лет об этом и не знала...
И ещё нужно запоминать текущее окно проги и текущий фокус объекта на форме.
Или это не особо важно ?
А то у меня опять хрень получается..

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 4 [только новые]


постоянный участник




Пост N: 7458
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.07.23 18:00. Заголовок: Andrey пишет: ВАЖНО..


Andrey пишет:

 цитата:
ВАЖНО ! При запуске одного таймера, все другие надо выключать...


Что-то за сегодня из-за этого выключения юзера жалуются, отправка не идёт.
Что будет в проге, если таймера не выключать при запуске одного таймера ?
У меня это вызывает - негатив, перестают выполняться функции на таймерах.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7459
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.07.23 23:57. Заголовок: Вернулся к старому в..


Вернулся к старому варианту, не останавливаю все таймера, а только один, который срабатывает, вот так.
И везде ставлю вывод в лог-файл, чтобы понять, что у юзера происходит.
         DEFINE TIMER Timer_1 INTERVAL nStaticTimeUpdate * 60 * 1000 ; 
ACTION {|| // таймер чтения всех работающих в журнале программы, вывод в STATUSBAR
Local cForm := "Form_Main"
Local cTime := "[" + HB_NtoS( nStaticTimeUpdate ) + " мин.]"
nTimer1++
? "@@@ Timer_1 " + cTime, HB_DATETIME(), ProcNL(), "попытка=",nTimer1
SetProperty(cForm, "Timer_1", "Enabled", .F.) // остановить таймер
// функция чтения журнала dbf всех работающих пользователей
// внутри сохранение/восстановление текущего алиаса, recno
OperatUsers2(nTimer1)
SetProperty(cForm, "Timer_1", "Enabled", .T.) // включить заново таймер
Return Nil
}
Form_Main.Timer_1.Enabled := .F. // отключить таймер до ON INIT
Form_Main.Timer_1.Visible := .F. // блок кода без изменения среды This на время работы Timer_1


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4344
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.07.23 08:39. Заголовок: Andrey пишет ..


Andrey пишет
 цитата:
Form_Main.Timer_1.Visible := .F. // блок кода без изменения среды This на время работы Timer_1


Т.к. оказалось, что среда This сохраняется без изменений всего несколько срабатываний таймера (2-3) и потом меняется на This среду окна MAIN (причина не ясна), то лучше поставить или убрать совсем строку
Form_Main.Timer_1.Visible := .T.
тогда This среда будет сохранятся (которая была) на время выполнения блока кода таймера и восстанавливаться по окончании.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4345
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.07.23 10:17. Заголовок: Andrey Думаю, такой..


Andrey
Думаю, такой вариант таймеров в своих потоках тебе должен подойти
Кому интересно пример тут https://TransFiles.ru/9nlnp

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 98
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет