Difference between revisions of "IsAsyncExecutionMode"

From SunFlurry wiki
Jump to: navigation, search
 
m (1 revision imported)
 
(No difference)

Latest revision as of 08:51, 7 February 2021

  IsAsyncExecutionMode (Функции среды)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Визуальность:Нет

Функция возвращает 1, если исполнение производится внутри асинхронного визуального события (к примеру, событие нажатия на кнопку), иначе будет возвращен 0 (к примеру, событие OnTimer или OnKeyPress). При асинхронном визуальном событии GUI не ожидает окончания его выполнения, поэтому длительные операции (формирование отчетов, вычисления, выгрузка и отправка данных и пр.) важно выполнять именно внутри таких событий, иначе любая работа с программой будет недоступна до окончания выполнения события. Программы в консольном клиенте также могут выполняться в прерывающем режиме (к примеру, прерывание при поступлении входящего TCP/IP соединения), однако, эта функция будет возвращать 1 в этом случае, так как окончания прерывающего режима в данном случае ожидает невизуальный поток, ускоренное освобождение которого не повлияет на производительность системы. Из прерывающих событий (перед выходом из события) можно перейти в асинхронный режим с помощью:

Синтаксис

IsAsyncExecutionMode():<Текущий контекст асинхронный 1 или 0 (INT)>

Возвращаемое значение

Функция возвращает числовое значение.

Примеры

Function Execute()
  If not IsAsyncExecutionMode Then
    //Выполняем обработку в асинхронном режиме. Кнопка "bExecute" может быть невидимой. Нажатие на кнопку вызывает исполнение данной функции.
    Form.bExecute.InvokeEventAsync("OnClick");
    Exit;
  EndIf;
  ...
EndFucntion