Применение EventSetTimer()

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Viktar Dzemikhau
3386
Viktar Dzemikhau  

Создаю с помощью мастера голый эксперт, что бы писать робота и вижу:

int OnInit()
{
//--- create timer
   EventSetTimer(60);
   
//---
   return(INIT_SUCCEEDED);
}

Заглянул в справку о функции EventSetTimer() и прочитал её описание:

"

Запускает генератор событий таймера с указанной периодичностью для текущего графика

"

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

Обычно все пишут по-нормально в той же яве да и шарпе типа такого:

JButton button1, button2, button3;
...
ActionListener listener = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        JButton button = (JButton)e.getSource();
        if (button == button1) {
             здесь действия по нажатию на кнопку button1
        } else if (button == button2) {
             здесь действия по нажатию на кнопку button2
        } else if (button == button3) {
             здесь действия по нажатию на кнопку button3
        }
    }
}

button1.addActionListener(listener);
button2.addActionListener(listener);
button3.addActionListener(listener);

Здесь чётко видно что является триггером для вызова события, да и вообще логично.

А что происходит в результате?

EventSetTimer(60);

Какие события происходят? По ходу написания этого поста я догадался, но стирать не буду, может кому пригодится ещё.

 Я так понял, что мы задаём при инициализации временной инетрвал таймера, а уже сами события буду выполняться из метода OnTimer() я верно понимаю?

Aleksey Lebedev
7474
Aleksey Lebedev  

Не совсем голый, при создании значит была галочка:


Konstantin Erin
2161
Konstantin Erin  
hoz:
 Я так понял, что мы задаём при инициализации временной инетрвал таймера, а уже сами события буду выполняться из метода OnTimer() я верно понимаю?

Функция EventSetTimer() задает интервал, через который генерируются события от таймера, а именно: таймер отсчитал нужный интервал. Терминал, под управлением которого выполняется советник, прерывает работу советника и вызывает функцию OnTimer, в которой выполняются требуемые действия - говорят, что событие обрабатывается. Сначала генерируется событие вне нашей программы, а потом как следствие вызывается обработчик, функция, ...

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий