Домой | Классы | Статические функции | Перечисления (ENUM) | Записи (RECORD) |
CLASS {Long_operation} , UNTESTED, DESTRUCTORS, NATIVE:
Класс формы для автоматического отображения, когда обнаруживается выполнение
длительной операции. В AL-IV, на каждой итерации каждого цикла по всему коду
AL-IV, выполняется декремент глобального счетчика. При его обнулении,
вызывается функция-заглушка, которая переинициализирует этот глобальный счетчик
обычно значением 65535), и вызывает функцию, которая детектирует начало
длительной операции. Длительной операция считается, если на протяжении
более чем 1 секунды не произошел возврат из текущего обработчика события на
форме. Так же, форма {Long_operation} позволяет отобразить прогресс
длительной операции (если это предусмотрено вашим кодом).
Для того, чтобы сделать это, следует обратиться к методу формы Long_operation,
который возвращает (или создает и возвращает) экземпляр класса
{Long_operation}, привязанный к этой форме, и использовать его методы
Set_description, Set_progress и другие. Так же, есть метод Indicate,
позволяющий сообщить форме прогресса длинной операции, что пока что
программа не находится в той стадии, чтобы начинать отсчет 1 секунды (при этом
сбрасывается время точки начала отсчета этой секунды).
Но основное предназначение этой формы состоит в том, чтобы позволить пользователю
приостановить или прекратить длительную операцию (без принудительного завершения
всего приложения, с сопутствующим крахом и потерей прочих результатов работы).
Имеется опция компилятора, позволяющая отключить работу с глобальным
счетчиком и детектированием длительных операций. В этом случае так же
целесообразно указать в настройках проекта путь к фиктивной реализации
класса {Long_operation}, чтобы уменьшить число зависимостей и сократить
код. Так же, возможно создать свою функцию заглушки и использовать
возможность контроля итераций в AL-IV для своих целей.
IMPORT : {AL4_form} .
BASE CLASS {Form} .
STR Sender_alias , INIT
{Label} description|_long_operation
{Label} stage_details|_current_stage
{Progress} progress|_of_operation_0_TO_100
{Button} pause|_operation
{Button} cancel_operation
BOOL Paused|_until_button_pressed_again , READ
Установлено в TRUE, если в начтоящее время операция "заморожена".
BOOL Cancelled|_operation , READ
TRUE, если операция была отменена (пользователем).
|
INT activity_count|er_0_TO_999999_looped
{Date_time}.{date_time} last_indic|ate_LOCAL
|
Используйте этот метод для перезапуска счетчика 1 секунды до того, как подсистема AL-IV решит, что ваш код блоее "не отвечает". Передача параметра TRUE позволяет выполнить находящиеся в очереди события формы. Это создает впечатление "плавной" работы приложения на заднем плане, без необходимости использования механизма потоков ({Thread}). |
| |
|
BOOL Finished|_operation
| |
|