DisableGUIInterrupts

From SunFlurry wiki
Jump to: navigation, search
  DisableGUIInterrupts (Создание OLE объекта)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, число
Визуальность:Нет

Функция позволяет запретить прерывание выполнения потока или закрытие программы, если первый аргумент равен 1, до того, как она будет вызвана повторно с первым аргументом, равным 0. Дополнительный текст будет показан пользователю, в момент попытки прерывания или закрытия программы. Функция работает только для визуального режима, и должна использоваться только с блоком Try ... Finally, так как в ином случае существует опасность получить состояние клиента, когда он не отвечает на попытки закрытия корректным образом. Режим защиты нельзя включить для корневого потока. Режим защиты может быть включен одновременно для более чем одного потока. Обычно функция может использоваться в совокупности с внешними вызовами (к примеру в кассовый аппарат), особенно когда выгрузка состоит из более чем одного вызова и необратимо меняет состояние внешнего объекта, факт чего необходимо зафиксировать по окончании выгрузки (простая конструкция Try ... Finally может быть недостаточна в этом случае, так как пользователь может прервать выполнение после одного из нескольких внешних вызовов, оставляя внешний объект в состоянии неопределенности). При включенном режиме защиты от прерываний функция модифицирует выполнение следующих операций:

  • Ctrl+C не будет выводить диалог запроса на прерывание выполнения (и, соответственно, выполнять прерывание), вместо этого будет выведен текст описания отказа от прерывания.
  • Попытка прервать выполнение из меню правой клавиши мыши, как и предыдущий пункт, будет выводить текст описания отказа от прерывания.
  • При попытке закрыть текущее рабочее окно потока, будет выведен текст описания отказа от прерывания.
  • Попытка завершить выполнение визуального клиента, будет выводить сообщение о том, что один из потоков выполняет критическую операцию, и что пользователю необходимо подождать ее окончания.

Синтаксис

DisableGUIInterrupts(<Защита (INT)>,<Текст защиты (STRING)>="")

Аргументы

  • <Защита (INT)> - Включает или выключает режим защиты от прерывания
  • <Текст защиты (STRING)> - Текст, который будет показан пользователю при попытке прервать выполнение. Если при включении режима защиты оставить этот аргумент пустым, будет использован стандартный текст.


Примеры

//Пример показывает, как можно использовать функцию DisableGUIInterrupts для выполнения критических операций
DisableGUIInterrupts(1,"Нельзя прервать текущую операцию, так как это может явиться причиной неверный данных! Подождите окончания выполнения операции!");
Try

  ...

Finally
  DisableGUIInterrupts(0);
EndTry;