Последняя версия DataExpress 3 beta от 20 сентября 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Асинхронная работа в длинных скриптах

Все о том как сделать что-то с помощью скриптов.
Zenitchik
Интересующийся
Сообщения: 66
Зарегистрирован: Чт мар 08, 2018 1:07 am

Асинхронная работа в длинных скриптах

Сообщение Zenitchik » Вс мар 11, 2018 6:35 pm

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

Например, в VisualBasic есть оператор DoEvents, по которому обрабатываются все накопленные события интерфейса, а потом продолжается выполнение кода со следующей за ним команды.
В JavaScript есть функция setTimeout, позволяющая выполнить некоторую функцию не прямо сейчас, а через некоторое время, например, сразу как только обработаются все интерфейсные события.
Ещё неплохой вариант - события таймера, по которым можно сделать работу скрипта, а остальные события замечательно уложатся между ними.

Что на эту тему есть в RemObject Pascal Script? Или, может, в API DataExpress есть какая нибудь полезная для этого команда?

jurist23rus
Эксперт
Сообщения: 2399
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Асинхронная работа в длинных скриптах

Сообщение jurist23rus » Вс мар 11, 2018 6:48 pm

Таймеры есть. Класс Ttimer в сети найдете описание.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
admin
Разработчик
Сообщения: 3781
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: Асинхронная работа в длинных скриптах

Сообщение admin » Вс мар 11, 2018 7:33 pm

Application.ProcessMessages - аналог DoEvents.