Обсуждение статьи "Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки" - страница 5

 
tol64:

Теперь согласны? )

Если честно я не понимаю, почему индикатор после отключения эксперта должен перестать отслеживать движение мыши? Где связь между индикатором и экспертом?
 
C-4:
Если честно я не понимаю, почему индикатор после отключения эксперта должен перестать отслеживать движение мыши? Где связь между индикатором и экспертом?

В том то и дело, что связи между ними может и не быть, поэтому каждая программа при выгрузке должна отключать то, что может быть не нужно другим программам. В данном случае, если индикатору не нужно отслеживание события передвижения мыши, зачем забивать поток очереди событий ?

Вы можете этого не делать конечно, это необязательно. Но если говорить об оптимизации, то по моему это нужно. 

 
tol64:

В том то и дело, что связи между ними может и не быть, поэтому каждая программа при выгрузке должна отключать то, что может быть не нужно другим программам. В данном случае, если индикатору не нужно отслеживание события передвижения мыши, зачем забивать поток очереди событий ?

Вы можете этого не делать конечно, это необязательно. Но если говорить об оптимизации, то по моему это нужно. 

Василий дело говорит, программа должна не бездумно включать/отключать отслеживание, а:

  • Включать, только если оно отключено (это не критично)
  • После завершения работы возвращать в то состояние, в котором оно (отслеживание) было.

Т.е. отключение должно происходить только если при запуске программы отслеживание было отключено.

Тогда любая комбинация запусков/остановок программ с использованием/без использования отслеживания событий мыши будет работать корректно.

 
tol64:

В том то и дело, что связи между ними может и не быть, поэтому каждая программа при выгрузке должна отключать то, что может быть не нужно другим программам. В данном случае, если индикатору не нужно отслеживание события передвижения мыши, зачем забивать поток очереди событий ?

Вы можете этого не делать конечно, это необязательно. Но если говорить об оптимизации, то по моему это нужно. 

Ага, т.е. в Вашем примере эксперт решил что индикатору больше не нужно получать событие EVENT_MOVE_MOUSE и отключил его перед своим выходом. Спрашивается, на каком основании эксперт решает, что нужно другим индикатором, а что нет? Не много ли он на себя берет?
 
komposter:

Василий дело говорит, программа должна не бездумно включать/отключать отслеживание, а:

  • Включать, только если оно отключено (это не критично)
  • После завершения работы возвращать в то состояние, в котором оно (отслеживание) было.
Т.е. отключение должно происходить только если при запуске программы отслеживание было отключено

Так у меня так и сделано.

Программа, в которой включается при запуске отслеживание, выключает его при выгрузке. А программа, которая осталась на графике и которой нужно отслеживание, проверяет, включено ли оно, и если отключено, то включает.

Желательно приводить свой вариант на примерах кода эксперта и индикатора из моего сообщения на предыдущей странице, чтобы исключить двоякость высказываний.

 
C-4:
Ага, т.е. в Вашем примере эксперт решил что индикатору больше не нужно получать событие EVENT_MOVE_MOUSE и отключил его перед своим выходом. Спрашивается, на каком основании эксперт решает, что нужно другим индикатором, а что нет? Не много ли он на себя берет?

Эксперт решает за себя. Но на самом деле мне Ваш вариант больше нравится. То есть, так будет правильнее. Я писал не о том, как лучше сделать, а о том, что это необходимо. Не надо переворачивать. Точка.

 
tol64:
Эксперт решает за себя. Но на самом деле мне Ваш вариант больше нравится. Я говорил не о том, как лучше сделать, а о том, что это необходимо. Не надо переворачивать. Точка.
Так если ни кто не будет отключать это событие, то и необходимость ежесекундно проверять включено ли оно тоже отпадает. В одном эксперте вы специально отключаете событие, а в другом ежесекундно мониторите его свойство, тогда как проще и безопасней вообще ничего не писать.
 
C-4:
Ага, т.е. в Вашем примере эксперт решил что индикатору больше не нужно получать событие EVENT_MOVE_MOUSE и отключил его перед своим выходом. Спрашивается, на каком основании эксперт решает, что нужно другим индикатором, а что нет? Не много ли он на себя берет?

Наверно подразумевается, что все другие программы по такому же принципу устроены, и они сами себе включат, если надо.

Но так ли важно выключать? Это включение/выключение распространяется только на один график.  Думаю ничего страшного не будет, если только включать и не выключать. 

Мало кто будет так заморачиваться.  Поэтому, чтобы проблем не создавать, только включать, но не выключать. Опять же, кто-нибудь ведь выключит. Значит через таймер следить и включать если надо, но не выключать.  

 
C-4:
 Так если ни кто не будет отключать это событие...
Это знать никто не может.
 
C-4:
Так если ни кто не будет отключать это событие, то и необходимость ежесекундно проверять включено ли оно тоже отпадает. В одном эксперте вы специально отключаете событие, а в другом ежесекундно мониторите его свойство, тогда как проще и безопасней вообще ничего не писать.

Необязательно ежесекундно, там есть альтернатива по другому событию (уже обсуждалось). Приведите лучше пример, пожалуйста, как я сделал это вот здесь. ) Из условия, что эксперту нужно это событие, а индикатору нет. Так будет понятнее.

P.S. Поправка. Я ошибся. )) Ваш вариант не правильнее. Совсем не подходит. Поэтому лучше приведите пример исходя из условия выше. 

Причина обращения: