Ошибка плавающая. Причину установить не удалось.
Но замечено, что виснет с большей вероятностью, если одновременно с 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 |
Надо делать так, как надо. А как не надо - делать не надо.