не выгружается info.exe

Страницы: 1
RSS
не выгружается info.exe
 
Добрый день,
Обнаружил следующую проблему
Вот такая функция:
DS={};
function DS_6(cl,se)   -- создание источников тиков
   local int=INTERVAL_TICK;
   local x=cl..se..tostring(int);
   if DS[x]==nil then
       local ds,er=CreateDataSource(cl,se,int);ds:SetEmptyCallback();    if err then Log(err,"err_ds"); else      DS[x]=ds;        end
   end
end
---------------------
Проблема возникает если запускаем квик автономно (сбрасываем окно запроса логин, например)
Квик нормально загружается,
но при закрытии его  Окно квик закрывается ,
но процесс в памяти висит  снять можно лишь убив процесс
--------------------------
колбек onClose  скрипта не вызывается.
------------------------
Если в функции убрать    DS[x]=ds;    то завершение нормальное.
Могу предположить, что проблема в CreateDataSource(cl,se,int)  и последующем сохранении ds таблицы,
что не приводит к закрытию каких-то ожиданий в КВИКЕ.
--------------------------
Так и ждет у моря погоды, а моря то и нет.
 
Добрый день.
Сообщите версию терминала и приведите полный код, пожалуйста. Пока воспроизвести проблему у себя не удалось.
 
это полный код
версия 6.17.3.6
Я помню раньше нельзя было открывать источники в потоке колбеков, Приходилось их лепить в майн
Если эта проблема осталась, то я опять наступил на теже грабли в сарае.
 
знаю что спасение утопающих - дело рук самих утопающих.
Но тонущим хочется верить,
что на берегу появится герой или трезвые спасатели.
 
На 6.17.3 не повторяется. Кроме того, приведенный выше код не "запускается" - DS_6 не вызывается, источники данных создаваться не будут.
 
приведен код функции
вставьте ее в скрипт и вызовите с указанием кода инструмента класса
(полагаю вы знаете как это сделать, я то же)
У меня все работает, лишь при закрытии надо убивать процесс
 
Код
DS={};
function DS_6(cl,se)   -- создание источников тиков
    local int=INTERVAL_TICK;
    local x=cl..se..tostring(int);
    if DS[x]==nil then
        local ds,er=CreateDataSource(cl,se,int);ds:SetEmptyCallback();
        if err then 
            Log(err,"err_ds"); 
        else      
            message("ADD " .. x)
            DS[x]=ds;
        end
    end
end

function OnStop(s)
    stopped = true
end
function main()
    local n=getNumberOf("securities")
    for i=0, n-1 do
        sec = getItem("securities", i)
        if sec and sec.class_code == "SPBFUT" then
            DS_6("SPBFUT", sec.code)
        end
    end
    while not stopped do
        sleep(500)
    end
end
Этот код не приводит к зависанию ни на 6.17 ни на версии 7. Можете прислать нам архив терминала, либо самостоятельно снять полный дамп процесса после закрытия окна. Например с помощью ProcDump
Страницы: 1
Читают тему
Наверх