Тема: igExt
Показать сообщение отдельно
Старый 17.01.2010, 13:18   #28
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 32
Сказал Спасибо: 0
Имеет 14 спасибок в 12 сообщенях
sinles пока неопределено
По умолчанию

Я нашел решение как обеспечить долгую жизнь боту (что бы он не вылетал)
качать и разбираться в компиляторе паскаля мне как то лень было поэтому я правил только сам скрипт.
Я добавил буфер в котором сохраняются действия сгенерированные длл-ем. Этот буфер читается по таймеру, раз в 100мсек и действия обрабатываются. Зачем буфер ? уже подчеркивалось что длл работает сильно быстро и возможно скрипт не успевает отрабатывать действия переданные ему, а насколько мне кажется занесение в буфер быстрее чем поиск нужного действия и выполнение его. Плюс таким образом добавляется задержка в ответах на присланные с сервера пакеты и пакеты успевают дойти до клиента раньше чем до сервера ответ на них...
Автор говорил что было бы не плохо запретить параллельное использование функции вызываемой длл-кой. Сделать это можно или синхронизируя все потоки или просто ввести переменную "функция_занята", что я и сделал. Но тут вступила в силу какая то мистика которую я не могу обьяснить,иногда переменная так и не освобождалась (я так понимаю в этот момент раньше происходило вылетание), поэтому в качестве переменной я использовал Timer.enabled и получилось что если переменная не освободилась сама, то таймер досчитает до 200мс и сам освободит переменную. И теперь что то в пх вылетает (не понимаю о чем в ошибке написано), но все продолжает работать.
Итого - 8 часов полет нормальный (пока бот ни разу не упал)
Вот скрипт
Вложения
Тип файла: rar bot4.rar (3.7 Кб, 90 просмотров)
sinles вне форума   Ответить с цитированием
За это сообщение sinles нажился спасибкой от: