Грубо говоря, Вы предлагаете такое (немного обобщенное).
можно своп, а можно и в одну сторону. Второй массив пока не планирую использовать. После получения по ссылке - только размер массива надо будет подкорректировать.
Зачем каждый раз в обработчике таймера делать EventKillTimer?
Кнопкой Stop в панели останавливать загрузку большого списка файлов. Ранее писал
Убрать таймер не предлагайте - нужно именно так.
Работа через паузу таймером нужна для работы с графической панелью, чтобы на короткое время паузы она успела получить события нажатия кнопок и обработать их. Если работать без таймера то нажатия на кнопки вообще не срабатывают. Кнопка нужна для остановки этих медленных расчетов.
Загрузка каждого файла начинается после небольшой паузы через OnTimer(), чтобы получить события от панели, а именно нажатие кнопки.
Ну и EventKillTimer ведь не запрещена к использованию кроме как в OnDeinit(), значит должна работать в любом количестве.
Удобство пользования MQL5-программой определяется не только её богатой функциональностью, но и продуманным графическим интерфейсом. Визуальное восприятие иногда гораздо важнее, чем быстрая и стабильная работа. Перед вами пошаговое руководство по самостоятельному созданию индикаторных панелей на основе классов Стандартной библиотеки.
PS Оказывается в лог уже выводится сообщение "start timer". Следующее сообщение "OnTimer via nnn ms" примерно через 100 миллисекунд. Прямо так в представленном логе и написано. Что не так?
В логе же видно, что идёт обработка а потом ещё такой же по времени лаг и дальше он увеличивается:
Forester #: Кнопкой Stop в панели останавливать загрузку большого списка файлов. Ранее писал Загрузка каждого файла начинается после небольшой паузы через OnTimer(), чтобы получить события от панели, а именно нажатие кнопки.
Ну и EventKillTimer ведь не запрещена к использованию кроме как в OnDeinit(), значит должна работать в любом количестве.
В браузерах есть SetInterval() который вызывает код с заданным интервалом - это то, что у вас сейчас есть.
А еще есть SetTimer() для одноразового выполнения через паузу. Вот такой конструкцией через EventKillTimer и получаем одноразовые выполнения через ваш имеющийся функционал.
Slava #: 0:09.685 TestTimer (EURUSD,H1) start timer 2025.06.1215:20:09.803 Te
Скопировал вашу версию кода. По прежнему лишние задержки.
2025.06.12 15:26:38.329 1) Work time: 995 ms 2025.06.12 15:26:38.329 start timer 2025.06.12 15:26:38.435 OnTimer via 105 ms 2025.06.12 15:26:40.438 2) Work time: 2002 ms 2025.06.12 15:26:40.438 start timer 2025.06.12 15:26:42.535 OnTimer via 2096 ms 2025.06.12 15:26:45.540 3) Work time: 3004 ms 2025.06.12 15:26:45.540 start timer 2025.06.12 15:26:48.635 OnTimer via 3094 ms ....
Билд 5106 Проверка последней беты показывает 2025.06.12 15:27:06.363 LiveUpdate you are using the latest version
Как получить 5107 - может там исправлено? И еще у меня Windows 7
Обновил до 5107 - лишние задержки по прежнему есть
2025.06.12 15:35:46.856 1) Work time: 994 ms 2025.06.12 15:35:46.856 start timer 2025.06.12 15:35:46.963 OnTimer via 106 ms 2025.06.12 15:35:48.966 2) Work time: 2002 ms 2025.06.12 15:35:48.966 start timer 2025.06.12 15:35:51.063 OnTimer via 2096 ms 2025.06.12 15:35:54.061 3) Work time: 2997 ms 2025.06.12 15:35:54.061 start timer 2025.06.12 15:35:57.172 OnTimer via 3110 ms
Вообще хотелось бы из массива uchar сразу получить массив любого типа.
Грубо говоря, Вы предлагаете такое (немного обобщенное).
Грубо говоря, Вы предлагаете такое (немного обобщенное).
После получения по ссылке - только размер массива надо будет подкорректировать.
Между выходом из OnTimer и следующем заходом в OnTimer должно пройти 100 мс, судя по коду.
Ок.
Зачем каждый раз в обработчике таймера делать EventKillTimer?
Ок.
Зачем каждый раз в обработчике таймера делать EventKillTimer?
Работа через паузу таймером нужна для работы с графической панелью, чтобы на короткое время паузы она успела получить события нажатия кнопок и обработать их. Если работать без таймера то нажатия на кнопки вообще не срабатывают. Кнопка нужна для остановки этих медленных расчетов.
Ну и EventKillTimer ведь не запрещена к использованию кроме как в OnDeinit(), значит должна работать в любом количестве.
Какая ошибка таймера? 5 секунд плюс 100 миллисекунд?
PS Оказывается в лог уже выводится сообщение "start timer". Следующее сообщение "OnTimer via nnn ms" примерно через 100 миллисекунд. Прямо так в представленном логе и написано. Что не так?
В логе же видно, что идёт обработка а потом ещё такой же по времени лаг и дальше он увеличивается:
Кнопкой Stop в панели останавливать загрузку большого списка файлов. Ранее писал Загрузка каждого файла начинается после небольшой паузы через OnTimer(), чтобы получить события от панели, а именно нажатие кнопки.
Ну и EventKillTimer ведь не запрещена к использованию кроме как в OnDeinit(), значит должна работать в любом количестве.
А еще есть SetTimer() для одноразового выполнения через паузу. Вот такой конструкцией через EventKillTimer и получаем одноразовые выполнения через ваш имеющийся функционал.
100мс только после первого запуска таймера - при последующих уже дополнительные задержки, равные времени от предыдущего срабатывания Ontimer().
Я не знаю, как это у вас получается. Я запустил Ваш код.
Вот результат
Билд 5107
0:09.685 TestTimer (EURUSD,H1) start timer 2025.06.12 15:20:09.803 Te
Скопировал вашу версию кода. По прежнему лишние задержки.
2025.06.12 15:26:38.329 1) Work time: 995 ms
2025.06.12 15:26:38.329 start timer
2025.06.12 15:26:38.435 OnTimer via 105 ms
2025.06.12 15:26:40.438 2) Work time: 2002 ms
2025.06.12 15:26:40.438 start timer
2025.06.12 15:26:42.535 OnTimer via 2096 ms
2025.06.12 15:26:45.540 3) Work time: 3004 ms
2025.06.12 15:26:45.540 start timer
2025.06.12 15:26:48.635 OnTimer via 3094 ms
....
Билд 5106
Проверка последней беты показывает
2025.06.12 15:27:06.363 LiveUpdate you are using the latest version
Как получить 5107 - может там исправлено?
И еще у меня Windows 7
Скопировал вашу версию кода. По прежнему лишние задержки.
Билд 5106
Проверка последней беты показывает
2025.06.12 15:27:06.363 LiveUpdate you are using the latest version
Как получить 5107 - может там исправлено?
И еще у меня Windows 7
Это - Ваша версия кода, я только стилизатор применил.
Таймер много лет не трогали.
Сделайте несколько попыток для получения 5107Обновил до 5107 - лишние задержки по прежнему есть
2025.06.12 15:35:46.856 1) Work time: 994 ms
2025.06.12 15:35:46.856 start timer
2025.06.12 15:35:46.963 OnTimer via 106 ms
2025.06.12 15:35:48.966 2) Work time: 2002 ms
2025.06.12 15:35:48.966 start timer
2025.06.12 15:35:51.063 OnTimer via 2096 ms
2025.06.12 15:35:54.061 3) Work time: 2997 ms
2025.06.12 15:35:54.061 start timer
2025.06.12 15:35:57.172 OnTimer via 3110 ms
Значит из за Win7.