Ошибка плавающая. Причину установить не удалось.
Но замечено, что виснет с большей вероятностью, если одновременно с DestroyTable происходит какое-то событие.
Для воспроизведения написал следующий скрипт:
Использование: Запустить скрипт без подключения к серверу. Чтобы посыпались события, установить соединение с сервером, и сразу закрыть одно из окон скрипта.
Но замечено, что виснет с большей вероятностью, если одновременно с DestroyTable происходит какое-то событие.
Для воспроизведения написал следующий скрипт:
Код |
---|
function main() ID = {} for i = 1, 20 do ID[i] = AllocTable() CreateWindow(ID[i]) SetTableNotificationCallback(ID[i], function(id, event) if event == QTABLE_CLOSE then run = false end end) end run = true while run do sleep(1) end for _, id in pairs(ID) do DestroyTable(id) end end |
Надо делать так, как надо. А как не надо - делать не надо.