Difference between revisions of "IsAsyncExecutionMode"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:51, 7 February 2021
IsAsyncExecutionMode (Функции среды) | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция возвращает 1, если исполнение производится внутри асинхронного визуального события (к примеру, событие нажатия на кнопку), иначе будет возвращен 0 (к примеру, событие OnTimer или OnKeyPress). При асинхронном визуальном событии GUI не ожидает окончания его выполнения, поэтому длительные операции (формирование отчетов, вычисления, выгрузка и отправка данных и пр.) важно выполнять именно внутри таких событий, иначе любая работа с программой будет недоступна до окончания выполнения события. Программы в консольном клиенте также могут выполняться в прерывающем режиме (к примеру, прерывание при поступлении входящего TCP/IP соединения), однако, эта функция будет возвращать 1 в этом случае, так как окончания прерывающего режима в данном случае ожидает невизуальный поток, ускоренное освобождение которого не повлияет на производительность системы. Из прерывающих событий (перед выходом из события) можно перейти в асинхронный режим с помощью:
- Функций вызова асинхронного режима: AsyncExecuteFunction, InvokeEventAsync.
- Выполнения вычисления в другом потоке: ExecuteFunctionInSeparateThread
Синтаксис
IsAsyncExecutionMode():<Текущий контекст асинхронный 1 или 0 (INT)>
Возвращаемое значение
Функция возвращает числовое значение.
Примеры
Function Execute() If not IsAsyncExecutionMode Then //Выполняем обработку в асинхронном режиме. Кнопка "bExecute" может быть невидимой. Нажатие на кнопку вызывает исполнение данной функции. Form.bExecute.InvokeEventAsync("OnClick"); Exit; EndIf; ... EndFucntion