Utilisation du gestionnaire de temporisation. Je voulais écrire un article, mais j'ai été détourné. Même si ce n'est pas suffisant pour un article.
Vous ne l'obtiendrez pas en un temps précis à cause du code monofil et de la file d'attente des événements, mais avec une erreur moyenne inférieure à une seconde (le maximum est limité par le temps maximal d'exécution des événements par le code).
D'autant plus qu'il n'y a qu'un seul chronomètre.
En avez-vous besoin ?
Oui, la marge d'erreur est presque imperceptible. Vous voulez peut-être le télécharger sur Code Base en une seule fois ? Il se perdra sur le forum, et quelqu'un d'autre en aura besoin.
Yedelkin: Oui, l'erreur est presque imperceptible. Pourquoi ne pas le mettre tout de suite dans le Code Base ? Il se perdra sur le forum, et quelqu'un d'autre en aura besoin.
Pas tout à fait terminé, je suis occupé avec mon Fichier illimité pour 5. J'aurai bientôt fini.
La question n'est pas de savoir si nous en aurons besoin ou pas. C'est la seule façon normale et correcte de travailler avec plusieurs minuteries.
Existe-t-il un moyen de faire en sorte que l'EA génère des événements de type Timer à un moment précis ? Par exemple, au début de la dernière minute de l'heure ou de la journée.
Quel est le problème ? Faites fonctionner un minuteur normal et analysez le temps. S'il ne correspond pas à l'heure, quittez immédiatement OnTimer.
Là encore, il s'agit d'un excellent substitut à la fonction Sleep des dindes, et là encore, une seconde est un peu trop.
Le sujet est ouvert à la discussion. Qu'en pensez-vous ?
Il y a une nuance. La minuterie de l'indicateur ne fonctionne pas si elle n'est pas attachée au graphique. Par conséquent, même une deuxième minuterie est souvent inutile dans les indicateurs.
Voici une solution pour surveiller les événements de moins d'une seconde. Peut-être qu'une minuterie peut être réalisée en conjonction avec GetTickCount().
stringo: Quel est le problème ? Vous devez lancer une minuterie normale et analyser le temps. Si l'heure ne convient pas, quittez immédiatement OnTimer.
Et pourquoi devrais-je bombarder la file d'attente d'événements Timer toutes les secondes et perdre mon temps à vérifier OnTimer() toutes les secondes, si je veux exécuter OnTimer() une fois par jour (par heure, etc.) mais à une certaine heure ?
Je pense qu'il serait beaucoup plus rationnel et élégant d'utiliser cette fonction avec deux paramètres :
boolEventSetTimer(
int seconds, // количество секунд для OnTimerintзадержка=0// количество секунд задержки запуска первого события Timer
);
C'est ce que le SD a suggéré.
Ajout : la valeur du paramètre de délai peut être calculée facilement et une seule fois dans OnInit().
intзадержка=0// количество секунд задержки запуска первого события Timer
de ne pas le faire du tout, car c'est juste des conneries.
Je vais demander en tant qu'expert en conneries. Quelle est l'idée derrière ce délai(intdelay=0), et dans quel but a-t-il été suggéré (délai) ? Comment l'avez-vous compris ?
Et la deuxième question que je veux clarifier, quel est l'intérêt de spécifier"nombre de millisecondes pour un délai de 1 seconde pour OnTimer" ? Quel objectif cherchez-vous à atteindre ? Par exemple, pour retarder de trois millisecondes chaque seconde dans OnTimer ?
Eh bien, en fait, c'est ce que je suggérais. Juste emballé dans un paquet pratique.
Une fois par seconde, c'est une somme dérisoire, surtout si vous sautez des événements inutiles.
Comme vous le comprenez, dans ce cas, ma devise est : "A bas tous les misérables si vous pouvez vous en passer". La seule chose que vous devez faire est de permettre de retarder la génération du premier événement Timer au niveau du terminal pour le temps choisi par un utilisateur. Ainsi, je ne minimise pas l'importance de votre code, d'autant plus que je ne l'ai tout simplement pas vu.
Utilisation du gestionnaire de temporisation. Je voulais écrire un article, mais j'ai été détourné. Même si ce n'est pas suffisant pour un article.
Vous ne l'obtiendrez pas en un temps précis à cause du code monofil et de la file d'attente des événements, mais avec une erreur moyenne inférieure à une seconde (le maximum est limité par le temps maximal d'exécution des événements par le code).
D'autant plus qu'il n'y a qu'un seul chronomètre.
En avez-vous besoin ?
Oui, l'erreur est presque imperceptible. Pourquoi ne pas le mettre tout de suite dans le Code Base ? Il se perdra sur le forum, et quelqu'un d'autre en aura besoin.
Pas tout à fait terminé, je suis occupé avec mon Fichier illimité pour 5. J'aurai bientôt fini.
La question n'est pas de savoir si nous en aurons besoin ou pas. C'est la seule façon normale et correcte de travailler avec plusieurs minuteries.
Pas tout à fait terminé, je suis occupé avec mon Fichier illimité pour 5. J'aurai bientôt fini.
Existe-t-il un moyen de faire en sorte que l'EA génère des événements de type Timer à un moment précis ? Par exemple, au début de la dernière minute de l'heure ou de la journée.
Là encore, il s'agit d'un excellent substitut à la fonction Sleep des dindes, et là encore, une seconde est un peu trop.
Le sujet est ouvert à la discussion. Qu'en pensez-vous ?
Il y a une nuance. La minuterie de l'indicateur ne fonctionne pas si elle n'est pas attachée au graphique. Par conséquent, même une deuxième minuterie est souvent inutile dans les indicateurs.
Voici une solution pour surveiller les événements de moins d'une seconde. Peut-être qu'une minuterie peut être réalisée en conjonction avec GetTickCount().
Quel est le problème ? Vous devez lancer une minuterie normale et analyser le temps. Si l'heure ne convient pas, quittez immédiatement OnTimer.
Et pourquoi devrais-je bombarder la file d'attente d'événements Timer toutes les secondes et perdre mon temps à vérifier OnTimer() toutes les secondes, si je veux exécuter OnTimer() une fois par jour (par heure, etc.) mais à une certaine heure ?
Je pense qu'il serait beaucoup plus rationnel et élégant d'utiliser cette fonction avec deux paramètres :
C'est ce que le SD a suggéré.
Ajout : la valeur du paramètre de délai peut être calculée facilement et une seule fois dans OnInit().
Et pourquoi...
Eh bien, en fait, c'est ce que je suggérais. Juste emballé dans un paquet pratique.
Une fois par seconde, c'est une somme dérisoire, surtout si vous sautez des événements inutiles.
et ceci.
de ne pas le faire du tout, car c'est juste des conneries.
de ne pas le faire du tout, car c'est juste des conneries.
Je vais demander en tant qu'expert en conneries. Quelle est l'idée derrière ce délai(int delay=0), et dans quel but a-t-il été suggéré (délai) ? Comment l'avez-vous compris ?
Et la deuxième question que je veux clarifier, quel est l'intérêt de spécifier"nombre de millisecondes pour un délai de 1 seconde pour OnTimer" ? Quel objectif cherchez-vous à atteindre ? Par exemple, pour retarder de trois millisecondes chaque seconde dans OnTimer ?
Eh bien, en fait, c'est ce que je suggérais. Juste emballé dans un paquet pratique.
Une fois par seconde, c'est une somme dérisoire, surtout si vous sautez des événements inutiles.