Всем привет. Имеется простой скрипт:
Код |
---|
IsRun = true
function main()
S_TAB = AllocTable()
AddColumn(S_TAB, 1, "Param",true, QTABLE_STRING_TYPE, 18)
CreateWindow(S_TAB)
InsertRow(S_TAB, 1)
while IsRun do
sleep(1000)
end
SetCell(S_TAB, 1, 1, "Stopped")
Message('Script stopped')
end
function OnStop()
IsRun = false
end
|
Если вызывается функция OnStop(), то скрипт здорово подвисает при выполнении SetCell(). Подвисает настолько, что код после SetCell не успевает выполняться, т.к. заканчивается таймаут. Причём какой бы большой таймаут ни был, всё что после SetCell не выполняется. Это можно как-то исправить или побороть?
Если SetCell разместить внутри OnStop, то скрипт не зависает. Но мне нужно, чтобы SetCell была в Main. Если завершать работу скрипта другим способом (например IsRun = false в любом другом месте), то скрипт также не зависает, и SetCell и весь остальной код выполняется до конца.
Может есть какое-то ограничение, о котором я не знаю просто, и нельзя использовать функции для работы с таблицами, когда срабатывает OnStop?
Версия Квик 8.8.4.3
Не то, чтобы это была критичная проблема, но уж очень много времени я потратил на её поиск :)