1 (2022-11-03 11:38:48 отредактировано Serg_)

Тема: Отписка от колбека SetUpdateCallback и сразу же подписка

Что то фигня получается, я подписываюсь на акцию к примеру Сбера - все окей - обновляемые данные приходят.
Через некоторые время я отписываюсь от колбека и через несколько секунд опять подписываюсь, подписка проходит без ошибок, НО - колбек уже не вызывается, то есть обновляемые данные не хотят уже приходить.

Вот код демонстрирующий это:



global_cntr=0;



function my_callback_CreateDataSource_(my_table_data_candle_, code_class_, code_paper_, interval_, idx)


message(code_paper_ ..":" .. interval_string_..":" ..tostring(my_table_data_history_candle_:C(idx))  )




if global_cntr == 13 then

my_table_data_history_candle_:Close()     --отписываемся
message("CLOSE")

end
global_cntr=global_cntr+1


end








function main()

message("start")

local code_class_1= "TQBR"          
local code_paper_1= "SBER"
local intervakla_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_(my_table_1, code_class_1, code_paper_1, intervakla_1, idx) end)









while not stopped do 

sleep(1)

if global_cntr == 14 then

message("START_2")

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



local my_table_2, error_desc_2 = CreateDataSource(code_class_1, code_paper_1, intervakla_1)  


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

status = my_table_2:SetUpdateCallback(function(idx)my_callback_CreateDataSource_(my_table_2, code_class_1, code_paper_1, intervakla_1, idx) end)

message(tostring(status))

global_cntr = global_cntr + 1

message("END")
break

end


end








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



end -- end main()

2

Re: Отписка от колбека SetUpdateCallback и сразу же подписка

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

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

Это корректное поведение функций ?