Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я ведь нигде не писал о том, что DLL нужно выгрузить. Этим занимается терминал. Я написал: сообщает о том, что нужно выгрузиться. Не додумывайте пожалуйста того, о чем я не писал.
Так как же ему дать об этом знать? Разве ExpertRemove не должен инициировать этот процесс?
По идее, такой советник должен подвисать и при обычном удалении с графика, но этого не происходит.
Есть какая-то особенность при применении шаблона. Хочется разобраться.
Пауза не поможет. Ведь это просто откладывание проблемы на время. В итоге вероятность dealock остается той же. Если DLL с кодом, то нужно просмотреть все ее обращения к окнам терминала (или даже к самому процессу).
Почему? Если терминал выгружает неиспользуемые ДЛЛ по тайм-ауту, то пауза должна помочь. Но это все догадки.
ДЛЛ системные, к окнам обращаются. Но ведь не после ЭкспертРемув?
Почему? Если терминал выгружает неиспользуемые ДЛЛ по тайм-ауту, то пауза должна помочь. Но это все догадки.
ДЛЛ системные, к окнам обращаются. Но ведь не после ЭкспертРемув?
Если системные, то ничего из того, что я описал, не нужно. Имел в виду, что если своя DLL, которая наплодила ниток, то перед выгрузкой эксперта нужно все эти нитки остановить.
Тут у меня вопрос такой нечаянно возник...
А эти команды могут выполниться с правами меньше чем у админа?
//подозреваю что эксперт перезагружается именно под таким пользователем, вот и подвисает...
Так как же ему дать об этом знать? Разве ExpertRemove не должен инициировать этот процесс?
По идее, такой советник должен подвисать и при обычном удалении с графика, но этого не происходит.
Есть какая-то особенность при применении шаблона. Хочется разобраться.
Совсем не факт что между OnDeinit() и OnInit() (при перезапуске эксперта/применении шаблона) произойдёт выгрузка и повторная загрузка DLL.
А если повторная загрузка DLL не производится то static переменные внутри неё не сбрасываются и не все ресурсы освобождаются/реаллоцируются. С точки зрения DLL ничего не поменялось.
Если она где-то зацепила хендлы окон и внутри себя сохранила то может начаться свистопляска.
Аккуратно и внимательно пересмотрите код в OnDeinit - все ли нужные команды вы скомандывали DLL и все ли ресурсы освободили
DLL загружается при первом обращении к её функциям и выгружается через какое-то время после того как на неё нет ссылок (то есть когда ВСЕ индикаторы и эксперты которые её использовали выгружены).
Совсем не факт что между OnDeinit() и OnInit() (при перезапуске эксперта/применении шаблона) произойдёт выгрузка и повторная загрузка DLL.
А если повторная загрузка DLL не производится то static переменные внутри неё не сбрасываются и не все ресурсы освобождаются/реаллоцируются. С точки зрения DLL ничего не поменялось.
Если она где-то зацепила хендлы окон и внутри себя сохранила то может начаться свистопляска.
Аккуратно и внимательно пересмотрите код в OnDeinit - все ли нужные команды вы скомандывали DLL и все ли ресурсы освободили
Ни каких команд DLL не отдаю, нет ни открытых хендлов, ни ссылок. Нечего чистить.
Видимо, придется экспериментировать, отключая ДЛЛ или вводя паузу.
Благодарю за попытки помочь!
А эти команды могут выполниться с правами меньше чем у админа?
//подозреваю что эксперт перезагружается именно под таким пользователем, вот и подвисает...
Терминал под админом, но это роли не играет.
Вручную-то эксперт удаляется с графика нормально.
Проблема пока даже не в повторном запуске, а в подвисании при само-удалении.
Кстати, если попробовать удалить такого советника (или закрыть график, закрыть терминал), то терминал вообще подвисает и завершается только снятием процесса.
В этом, видимо, и загвоздка.
Терминал под админом, но это роли не играет.
Вручную-то эксперт удаляется с графика нормально.
Проблема пока даже не в повторном запуске, а в подвисании при само-удалении.
Кстати, если попробовать удалить такого советника (или закрыть график, закрыть терминал), то терминал вообще подвисает и завершается только снятием процесса.
В этом, видимо, и загвоздка.
тогда только: надо команду(функцию) по полочкам разложить, её работу
но нам это неведомо
исправят, будет работать