바퀴를 스스로 재발명하지 않기 위해 아무도 멀티 타이머에 대한 솔루션을 찾지 못했습니까? 함수 포인터를 사용하면 구현이 어렵지 않은 것 같습니다. 이것은 나보다 먼저 구현되지 않았을 것입니다. 저것들. 초기 작업은 임의의 주파수로 타이머를 만들고 타이머 이벤트를 처리하기 위해 고유한 기능 과 연결하는 것입니다. 게다가 타이머는 얼마든지 있을 수 있습니다.
다음과 같이 다소:
#include <Timer.mqh>
CTimer timers;
int x1= 0 ;
int x2= 0 ;
intOnInit ()
{
timers.NewTimer( 500 , Sum1); // создаем новый таймер с периодом обновления 500 милисекунд и функцией-обраточником Sum1()
timers.NewTimer( 2000 , Sum2); // создаем новый таймер с периодом обновления 2000 милисекунд и функцией-обраточником Sum2()return ( INIT_SUCCEEDED );
}
...
voidOnTimer ()
{
timers. OnTimer ();
}
//+------------------------------------------------------------------+void Sum1() { // данная функция вызывает с периодичностью 500 милисекунд
x1++;
if (x1== 10 ) timers.KillTimer(Sum1); // удаляем этот таймер
}
void Sum2() { // данная функция вызывает с периодичностью 2000 милисекунд
x2++;
if (x2== 10 ) timers.KillTimer(Sum2); // удаляем этот таймер
}
1. Включите в свою программу класс CTimer 2. Создайте один объект класса СTimer. Например timers. 3. Создайте функции-обработчики необходимых таймеров формата void AnyNameFunction() {....} например с такими именами: 4. Когда вам необходимо создать и запустить таймер, сделайте так из любого места: 5. Когда вам таймер больше не нужен...
바퀴를 스스로 재발명하지 않기 위해 아무도 멀티 타이머에 대한 솔루션을 찾지 못했습니까?
함수 포인터를 사용하면 구현이 어렵지 않은 것 같습니다. 이것은 나보다 먼저 구현되지 않았을 것입니다.
저것들. 초기 작업은 임의의 주파수로 타이머를 만들고 타이머 이벤트를 처리하기 위해 고유한 기능 과 연결하는 것입니다. 게다가 타이머는 얼마든지 있을 수 있습니다.
다음과 같이 다소:
아무도 멀티 타이머에 대한 솔루션을 만나지 못했습니다.
확실히 오래전에 KB에서 본 것 같아요.
찾을 수 없습니다. 기이한.
좋아, 내가 직접 할게. 함정은 없는 것 같습니다. KB에 올리겠습니다
저것들. 초기 작업은 임의의 주파수에서 타이머를 만들고 타이머 이벤트를 처리하기 위한 고유한 기능 과 연결하는 것입니다. 게다가 타이머는 얼마든지 있을 수 있습니다.
더 쉬운 선택이 되지 않을까요?
UPD: fxsaber 코드를 템플릿으로 사용할 수 있습니다.
모든 개체가 자동으로 삭제되도록 완료했습니다 https://www.mql5.com/en/forum/325418/page4#comment_16116740
찾을 수 없습니다. 기이한.
좋아, 내가 직접 할게. 함정은 없는 것 같습니다. KB에 올리겠습니다
만들어진
https://www.mql5.com/ru/code/31306
더 쉬운 선택이 되지 않을까요?
UPD: fxsaber 코드를 템플릿으로 사용할 수 있습니다.
모든 개체가 자동으로 삭제되도록 완료했습니다 https://www.mql5.com/ru/forum/325418/page4#comment_16116740
물론 가능합니다. 그러나 가독성이 떨어지고 관리하기가 더 어렵습니다.
만들어진
https://www.mql5.com/ru/code/31306
옛날 옛적에 (대략) 그랬습니다.
클래스와 함께 사용하면 불편합니다.
class CWithTimer {
public:
void CallMeByTimer();
};
함수 포인터가 있는 외부(클래스와 관련하여) 타이머는 무력합니다.
옛날 옛적에 (대략) 그랬습니다.
클래스와 함께 사용하면 불편합니다.
class CWithTimer {
public:
void CallMeByTimer();
};
함수 포인터가 있는 외부(클래스와 관련하여) 타이머는 무력합니다.
클래스 메소드 로서의 기능을 의미한다면 예, 동의합니다. 어제 나는 그것을 스스로 알아 냈고 어떻게 빠져나갈지 머리를 맞대고 있습니다.
객체는 타이머가 있는 클래스에 대한 포인터를 포함해야 합니다.