Событие закрытие терминала

Страницы: 1
RSS
Событие закрытие терминала, OnClose() OnStop(flag)
 
Потребовалось кое-что сделать при событии закрытия терминала.
Но OnClose() и OnStop(flag) не выводит системные сообщения и не выполняет код внутри.
Если отключить qlua.dll в окне «Версии компонентов и плагинов», всё работает по инструкции.
Как можно объяснить такое поведение?
Код
function OnInit() -- Функция вызывается терминалом QUIK перед вызовом функции main().
   is_run = true
   return
end -- выход из функции: OnInit()

function main() -- Функция, реализующая основной поток выполнения в скрипте. Для ее выполнения терминал QUIK создает отдельный поток.
   while is_run do -- повторяющийся цикл, пока is_run = true
      sleep(1000)
   end -- выход из цикла: повторяющийся цикл, пока is_run = true
   return
end -- выход из функции: main()

function OnClose() -- Функция вызывается перед закрытием терминала QUIK и при выгрузке файла qlua.dll.
-- Под выгрузкой файла qlua.dll подразумевается отключение плагина QLua
-- в окне «Версии компонентов и плагинов» (см. п. 1.9. Раздела 1 Руководства
-- пользователя QUIK).
   message("OnCl ose="..tostring(1),1) -- отладка скрипта с выводом системного сообщения
end

function OnStop(flag) -- Функция вызывается терминалом QUIK при остановке скрипта из диалога управления и при закрытии терминала QUIK.
-- При остановке или удалении работающего скрипта Lua из диалога управления «Доступные
-- скрипты» параметр вызова flag принимает значение «1». При закрытии терминала QUIK –
-- значение «2».
   message("OnStop flag="..tostring(flag),1) -- отладка скрипта с выводом системного сообщения
   is_run = false
   return 5000
end
 
Добрый день.

Остановка скрипта и выгрузка модуля qlua.dll происходит когда основное окно терминала уже закрыто.
Т.о. функция message() ничего не делает, т.к. выводить сообщение уже некуда.
Сами колбеки отрабатывают, в этом можно убедиться выполнив запись чего-либо в файл.
Страницы: 1
Читают тему
Наверх