Tekerleği yeniden icat etmemek için hiç kimse çoklu zamanlayıcı için bir çözüm bulamadı mı? Uygulama, işlev işaretçilerinin kullanımıyla bana zor görünmüyor. Bunun benden önce uygulanmamış olması muhtemel değildir. Onlar. ilk görev, herhangi bir frekansta bir zamanlayıcı oluşturmak ve zamanlayıcı olayını işlemek için bunu kendi işlevinizle ilişkilendirmektir. Ayrıca, herhangi bir sayıda zamanlayıcı olabilir.
aşağı yukarı şöyle:
#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. Когда вам таймер больше не нужен...
Vladimir Simakov : Nesne, zamanlayıcılı bir sınıfa yönelik bir işaretçi içermelidir.
Soru, başka bir sınıfın nesnesi (bu durumda, CTimer) bu sınıfın bir özelliği (değişkeni) olsa bile, bir işaretçi kullanarak statik olmayan bir sınıf yönteminin nasıl çalıştırılacağıdır. Ve mümkün mü? Korkarım öyle değil.
Tekerleği yeniden icat etmemek için hiç kimse çoklu zamanlayıcı için bir çözüm bulamadı mı?
Uygulama, işlev işaretçilerinin kullanımıyla bana zor görünmüyor. Bunun benden önce uygulanmamış olması muhtemel değildir.
Onlar. ilk görev, herhangi bir frekansta bir zamanlayıcı oluşturmak ve zamanlayıcı olayını işlemek için bunu kendi işlevinizle ilişkilendirmektir. Ayrıca, herhangi bir sayıda zamanlayıcı olabilir.
aşağı yukarı şöyle:
Çoklu zamanlayıcı için kimse çözümle karşılaşmadı
Uzun zaman önce KB'de gördüğüme eminim.
Bir şey bulamıyorum. Garip.
tamam, kendim yapacağım. Herhangi bir tuzak yok gibi görünüyor. KB olarak yayınlayacağım
Onlar. ilk görev, herhangi bir frekansta bir zamanlayıcı oluşturmak ve zamanlayıcı olayını işlemek için bunu kendi işlevinizle ilişkilendirmektir. Ayrıca, herhangi bir sayıda zamanlayıcı olabilir.
daha kolay bir seçenek olmaz mıydı?
UPD: ve böylece fxsaber kodunu şablon olarak alabilirsiniz
Tüm nesnelerin otomatik olarak silinmesi için tamamladım https://www.mql5.com/en/forum/325418/page4#comment_16116740
Bir şey bulamıyorum. Garip.
tamam, kendim yapacağım. Herhangi bir tuzak yok gibi görünüyor. KB olarak yayınlayacağım
yapılmış
https://www.mql5.com/ru/code/31306
daha kolay bir seçenek olmaz mıydı?
UPD: ve böylece fxsaber kodunu şablon olarak alabilirsiniz
Tüm nesnelerin otomatik olarak silinmesi için tamamladım https://www.mql5.com/ru/forum/325418/page4#comment_16116740
elbette mümkündür. Ancak daha az okunabilir ve yönetilmesi daha zor.
yapılmış
https://www.mql5.com/ru/code/31306
bir zamanlar (yaklaşık olarak) öyle yaptı.
Sınıflarla kullanım sakıncalıdır.
class CWithTimer {
public:
void CallMeByTimer();
};
ve işlev işaretçilerine sahip harici (sınıfa göre) zamanlayıcı güçsüzdür.
bir zamanlar (yaklaşık olarak) öyle yaptı.
Sınıflarla kullanım sakıncalıdır.
class CWithTimer {
public:
void CallMeByTimer();
};
ve işlev işaretçilerine sahip harici (sınıfa göre) zamanlayıcı güçsüzdür.
Sınıf yöntemi olarak bir işlevi kastediyorsanız, evet, katılıyorum. Dün kendim çözdüm ve nasıl çıkacağım konusunda kafamı dağıtıyorum.
Nesne, zamanlayıcılı bir sınıfa yönelik bir işaretçi içermelidir.