После вызова метода Close у обьекта CreateDataSource --> SetUpdateCallback больше не устанавливается

Страницы: 1
RSS
После вызова метода Close у обьекта CreateDataSource --> SetUpdateCallback больше не устанавливается
 
Собственно, как и написано в названии темы - после вызова метода Close у обьекта CreateDataSource --> SetUpdateCallback больше не устанавливается.

-То есть я заказываю SetUpdateCallback у акции Сбера.
-В колбек приходят обновляемые данные сбера.
-В какой то момент я отписываюсь от SetUpdateCallback - вызывая метод Close().   Отписка проходит успешно, данные более не приходят в колбек.
-После этого я уже вызываю CreateDataSource для акций Газпрома и зазываю SetUpdateCallback.
-Ошибок нет - все вызовы функций и методов проходят успешно, но данные не приходят в колбек.

То есть резюмирую - единственный вызов метода Close() - вырубает Всю последующие заказы CreateDataSourc: SetUpdateCallback

Это корректное поведение функций ?
 
Никто с таким не сталкивался ?
 
Цитата
Quikos написал:
Никто с таким не сталкивался ?
так как в документации о поведении функции ничего нет, то следовательно это поведение функции по факту.
--------------------------
Например, Земля круглая - по факту,
так как о том, какой она должна быть по замыслу автора, неизвестно.
Автор недоступен.
 
Цитата
nikolz написал:
Цитата
Quikos написал:
Никто с таким не сталкивался ?
так как в документации о поведении функции ничего нет, то следовательно это поведение функции по факту.
--------------------------
Например, Земля круглая - по факту,
так как о том, какой она должна быть по замыслу автора, неизвестно.
Автор недоступен.
В каком смысле нет и поведение по факту ?
В документации к SetUpdateCallback - сказано, что функция запрашивает данные на сервере и они должны прийти в callback-функцию, НО они не приходят. И никаких дополнительных описаний в SetUpdateCallback- нет.
А значит - это поведение SetUpdateCallback является ОШИБКОЙ - которая противоречит описанию функции.
 
Подозрительно, то - что тех.поддержка молчит.
 
Вот собственно код для подтверждения:



Код
global_cntr=0;

------------------------------------------------------------------------------------------------my_callback_CreateDataSource_SBER:Начало-----------------------------------------------------------------------------------------------

function my_callback_CreateDataSource_SBER(my_table_data_history_candle_, code_class_, code_paper_, interval_, interval_string_, idx)

message("SIZE_TABLE:" ..tostring(my_table_data_history_candle_:Size()) .. "\n" .. ":" ..  code_paper_ ..":" .. interval_string_..":" ..tostring(my_table_data_history_candle_:C(idx))  )



if global_cntr == 13 then       -- на 13 вызов callback`а Сбера отписываемся от колбека Сбера
my_table_data_history_candle_:Close()     --отписываемся от callback`а SBER.
message("CLOSE SBER CALLBACK")
end
global_cntr=global_cntr+1


end
---------------------------------------------------------------------------------------------my_callback_CreateDataSource_SBER:Конец-----------------------------------------------------------------------------------------------




------------------------------------------------------------------------------------------------my_callback_CreateDataSource_GAZP:Начало-----------------------------------------------------------------------------------------------
function my_callback_CreateDataSource_GAZP(my_table_data_history_candle_, code_class_, code_paper_, interval_, interval_string_, idx)


message("my_callback_CreateDataSource_HISTORY_2 - НЕ ВЫЗЫВАЕТСЯ")


end
------------------------------------------------------------------------------------------------my_callback_CreateDataSource_GAZP:Конец-----------------------------------------------------------------------------------------------









-----------------------------------------------------------------------------------------------------------int main:-----------------------------------------------------------------------------------------------------

function main()

message("start")

local code_class_1= "TQBR"          
local code_paper_1= "SBER"
local intervakla_1= INTERVAL_M1
local intervakla_string_1 = "INTERVAL_M1"


local my_table_1, error_desc_1 = CreateDataSource(code_class_1, code_paper_1, intervakla_1)  


------------------------Проверка на ошибки:-------------------
if error_desc_1 ~= nil then 
message("1:" .. error_desc_1)
end
--------------------------------------------------------------


status = my_table_1:SetUpdateCallback(function(idx)my_callback_CreateDataSource_SBER(my_table_1, code_class_1, code_paper_1, intervakla_1, intervakla_string_1, idx) end)  --Подписываемся на колбек Сбера.




--Ждем пока не вызовется 13-ый по счета вызов колбек Сбера в котором произойдет отписка от колбека. После чего - подписываемся на SetUpdateCallback для Газпрома:
while not stopped do 

sleep(1)

if global_cntr == 14 then

message("START_2")

code_class_2= "TQBR"          
code_paper_2= "GAZP"
intervakla_2= INTERVAL_M5
intervakla_string_2 = "INTERVAL_M5"



my_table_2, error_desc_2 = CreateDataSource(code_class_2, code_paper_2, intervakla_2)  


------------------------Проверка на ошибки:-------------------
if error_desc_2 ~= nil then 
message("1:" .. error_desc_2)
end
--------------------------------------------------------------------------
--Ошибок нет:


message("START_SetUpdateCallback_2")

status1 = my_table_2:SetUpdateCallback(function(idx)my_callback_CreateDataSource_GAZP(my_table_2, code_class_2, code_paper_2, intervakla_2, intervakla_string_2, idx) end)

message(tostring(status1))  --Статус 0: ошибок нет, НО my_callback_CreateDataSource_GAZP - НИКОГДА НЕ ВЫЗОВЕТСЯ.

global_cntr = global_cntr + 1

message("END")
break

end


end 







-------------------------
while not stopped do 
sleep(1)
end 
-------------------------

message("NOT END")

end -- end main()
 
То есть, чтобы опять заказывать  - SetUpdateCallback - нужно физически останавливать скрипт в Квике, и опять физически запускать. Ну это же явно какой то косяк ?
Страницы: 1
Читают тему
Наверх