DestroyTable подвешивает терминал.

Страницы: 1
RSS
DestroyTable подвешивает терминал.
 
Пример кода ниже.
На терминале версии 6.15.2.9 все работало без нареканий. После обновления, иногда, остановка скрипта кнопкой приводит к зависанию терминала.
function OnStop(s)
stopped=true
for i_order=0, getNumberOf("orders")-1,1 do
order=getItem("orders",i_order)
paramOrder=Orderflags2table(getItem("orders",i_order)["flags"])
if order.sec_code==farFuture and order.client_code==ClientCode  then
if paramOrder.active==true then
KillOrder (order.order_num, Future)
end
end
end
DestroyTable(t.t_id)
end

Если из этого блока убрать  DestroyTable(t.t_id) и поместить в конец тела main() то скрипт останавливается заметно медленнее и таблица очищается но не закрывается.
Как это можно вылечить?
 
Цитата
lergen пишет:
Если из этого блока убратьDestroyTable(t.t_id) и поместить в конец тела main() то скрипт останавливается заметно медленнее и таблица очищается но не закрывается.
http://forum.quik.ru/messages/forum10/message1000/topic155/#message1000
Цитата
Серж пишет:
Функции работы с таблицами, в т.ч. DestroyTable() не работают после нажатия кнопки "Остановить", поэтому их вызов надо размещать в колбеке OnStop().
 
Спасибо. С этим понятно. Как быть  с первым случаем. Почему закрытие таблицы приводит иногда к зависанию? Как вариант конечно можно закрывать вручную.
 
для начала, что значит "зависание"? если это зависание проходит через 5 сек то, - это одно, а если нет - то ответы будут совсем другими.
QLUA VM ждёт окончания работы колбека OnStop. после окончания его работы берёт из него возвращаемое в качестве результата время, которое Вы в нём укажете и только после этого принудительно останавливает поток майна, если время не указать - то время остановки майна по умолчанию - 5 сек.
настройка времени остановки:

Код
function OnStop()

...

return 3000



В данном случае, скрипт остановится через 3 сек.
 
Цитата
sam063rus пишет:
для начала, что значит "зависание"? если это зависание проходит через 5 сек то, - это одно, а если нет - то ответы будут совсем другими.
Если DestroyTable из кода убираю тогда да есть легкое подвисание на несколько сек. Но когда сабж в коде - если зависание то на глухо. Квик "не отвечает". Но повторюсь еще раз оно далеко не регулярное и закономерности пока ни какой не могу отследить.
 
sam063rus,
Гляньте в личную почту форума.  
 
В v.6.16 есть проблемы при завершении скрипта кнопкой "Остановить":
если main() завершится раньше OnStop(), то вызов каких-либо функций QLUA из OnStop() приводит к падению терминала:
http://forum-archive.quik.ru/forum/lua/124475/124533/?page=2/#m124533
Надо делать так, как надо. А как не надо - делать не надо.
 
Серж,
Премного благодарен!:)  
 
Цитата
Серж пишет:
В v.6.16 есть проблемы при завершении скрипта кнопкой "Остановить":
если main() завершится раньше OnStop(), то вызов каких-либо функций QLUA из OnStop() приводит к падению терминала:
http://forum-archive.quik.ru/forum/lua/124475/124533/?page=2/#m124533
Что-то не спасает та примочка!!!
 
День добрый!
А что этот трабл так и не исправлен в новой версии!
Повторюсь что примочка в виде _Exit()
bRun = nil
не помогает пока не убираем из кода - DestroyTable(t.t_id)
 
Цитата
lergen пишет:
День добрый!
А что этот трабл так и не исправлен в новой версии!
Повторюсь что примочка в виде _Exit()
bRun = nil
не помогает пока не убираем из кода - DestroyTable(t.t_id)
Добрый день.

На какой сейчас у Вас версии Quik проявляется проблема?
 
lergen

Мы разбираемся с данным вопросом. Постараемся в ближайшее время дать ответ.
 
Цитата
Egor Zaytsev пишет:
Цитата
lergen пишет:
День добрый!
А что этот трабл так и не исправлен в новой версии!
Повторюсь что примочка в виде _Exit()
bRun = nil
не помогает пока не убираем из кода - DestroyTable(t.t_id)
Добрый день.

На какой сейчас у Вас версии Quik проявляется проблема?
6.17.1.17 QUIK Junior
 
Цитата
lergen пишет:
Цитата
Egor Zaytsev пишет:
Цитата
lergen пишет:
День добрый!
А что этот трабл так и не исправлен в новой версии!
Повторюсь что примочка в виде _Exit()
bRun = nil
не помогает пока не убираем из кода - DestroyTable(t.t_id)
Добрый день.

На какой сейчас у Вас версии Quik проявляется проблема?
6.17.1.17 QUIK Junior
Спасибо за уточнения.
Как будет информация мы Вас оповестим.
 
Здравствуйте.
Причина проблемы обнаружена и будет исправлена в одной из следующих версий программы.
Страницы: 1
Читают тему
Наверх