Minuterie - page 4

 

Pour avoir une gamme d'événements OnTimer de moins d'une seconde.

Et être capable de mesurer certains processus en millisecondes.

Je n'ai pas du tout compris l'idée avec "...(int delay=0)", c'est pourquoi je l'ai écrit comme une connerie.

 
Yedelkin:
Comme vous l'avez compris, dans ce cas, ma devise est : "À bas tous les malfaiteurs, si vous pouvez vous en passer". La seule chose que vous devez faire est de permettre le retardement de la génération du premier événement Timer au niveau du terminal pour le temps choisi par un utilisateur. Je ne minimise pas l'importance de votre code, d'autant que je ne l'ai tout simplement pas vu.

Comment envisagez-vous d'organiser le premier retard de l'événement par rapport au chronomètre ?

La même seconde de minuterie sera lancée dans le terminal et des événements de minuterie seront générés pour le conseiller expert à un certain moment. Tout est exactement comme je l'ai déjà suggéré.

 
stringo:

Comment envisagez-vous d'organiser le premier retard de l'événement par rapport au chronomètre ?

La même seconde minuterie serait lancée dans le terminal et, à un certain moment, les événements de la minuterie commenceraient à être générés pour le conseiller expert. Tout est absolument identique à ce que j'ai déjà suggéré.

C'est ainsi que je l'imagine. Ayant trouvé la fonction EventSetTimer(14400, 7029) dans OnInit() , le terminal activera le timer interne et générera le premier événement Timer exactement à 7029 secondes après le démarrage du programme (disons à 12-00), comme le souhaite l'utilisateur. D'autres événements de la minuterie seront générés à des intervalles d'une fois toutes les quatre heures. Un événement par 4 heures, et non 14400 événements, où 13399 événements de la minuterie n'ont aucun sens pour l'utilisateur.

Cette approche, à mon avis, est radicalement différente de celle que vous avez suggérée. Parce que dans ma variante, la seconde minuterie interne (comptant 7029 secondes) fonctionnera pendant un temps limité seulement après l'initialisation du Conseiller Expert, et arrêtera son travail sans encombrer la file d'attente des événements. Votre variante fournit une génération continue d'événements toutes les secondes, de la première à la dernière minute du travail de l'expert, dont seul un événement sur 14400 aura au moins un certain poids pour un utilisateur.
 
pusheax:

Pour avoir une gamme d'événements OnTimer de moins d'une seconde.

Et être capable de mesurer certains processus en millisecondes.

En fait, le paramètre actuel"int seconds// nombre de secondes" définit la périodicité des événements du timer, et non des "délais pour OnTimer". Apprenez les mathématiques. En ce qui concerne les millisecondes, lisez au moins la première page du fil pour commencer.

pusheax:

Je n'ai pas du tout compris l'idée de "...(int delay=0)" et c'est pour cela que j'ai écrit que c'était nul.


Je vois. C'est un peu le genre de chose que l'on dit avant de s'en rendre compte. Ce n'est pas grave, ça arrive :) Nous avons tous parfois envie de partager notre vision de la beauté avec les autres.

 
Yedelkin:

Voici comment je vois les choses : ayant trouvé la fonction EventSetTimer(14400, 7029) dans OnInit() , le terminal activera le second timer interne et générera le premier événement Timer exactement 7029 secondes après le démarrage du programme (disons à 12-00), comme le souhaite l'utilisateur. D'autres événements de la minuterie seront générés à des intervalles d'une fois toutes les quatre heures. Un événement par 4 heures, et non 14400 événements, où 13399 événements de la minuterie n'ont aucun sens pour l'utilisateur.

Cette approche, je pense, est radicalement différente de ce que vous avez suggéré. Parce que dans ma variante, la seconde minuterie interne (comptant 7029 secondes) ne fonctionnera que pendant un temps limité après l'initialisation de l'EA, et s'arrêtera de fonctionner, sans encombrer la file d'attente des événements. Votre variante fournit une génération continue d'événements toutes les secondes, de la première à la dernière minute du travail de l'expert, parmi lesquels seul un événement sur 14400 aura au moins un certain poids pour un utilisateur.

Ok

Dans la fonction OnInit démarrer le timer EventSetTimer(7029);

Dans la fonction OnTimer, à la première arrivée, désactivez le timer précédent EventKillTimer() et démarrez un nouveau timer EventSetTimer(1440);

 
stringo:

Dans la fonction OnTimer à la première arrivée, désactivez la minuterie précédente EventKillTimer() et démarrez une nouvelle minuterie EventSetTimer(1440);

Fonctionnera-t-il correctement ? Quelqu'un a dit il n'y a pas si longtemps que la fonction EventSetTimer est essentiellement destinée à un appel unique de l'init.
 
stringo:

Ok

Dans la fonction OnInit, démarrer le timer EventSetTimer(7029);

Dans la fonction OnTimer du premier venu, désactivez le timer précédent EventKillTimer() et démarrez le nouveau timer EventSetTimer(1440);

Oh, la lumière au bout du tunnel ! Appeler EventSetTimer() à l'intérieur du OnTimer() lui-même ? Je vais certainement l'essayer quand je serai au terminal. Merci pour cette solution intelligente !
 
TheXpert:
Fonctionnera-t-il correctement ? Quelqu'un a dit il n'y a pas si longtemps que la fonction EventSetTimer est essentiellement destinée à être appelée une fois depuis l'init.
Je l'ai fait. Il s'agit d'une application courante. Ce qui n'invalide pas du tout les exotiques (si vous en avez envie).
 
stringo:

Ok

Dans la fonction OnInit, démarrer le timer EventSetTimer(7029);

Dans la fonction OnTimer du premier venu, désactivez le timer précédent EventKillTimer() et démarrez le nouveau timer EventSetTimer(1440);

C'est ainsi que je procède depuis des temps anciens. Cependant, dans le testeur, cette approche n'a pas fonctionné pendant un certain temps. Je suis passé aux compteurs dans le testeur.

Mais c'est tout lyrique. Les millisecondes sont très désirables. Je me joins aux souhaits.

J'ai maintenant besoin d'une résolution temporelle de 100 ms, mais j'ai une telle envie maintenant et je ne sais pas ce dont j'aurai besoin demain. Je n'aimerais pas avoir un seuil de débit aussi élevé, 1000 ms c'est trop épais, les millisecondes sont la norme. Si quelqu'un déborde bêtement de la file d'attente, c'est sa tragédie (il y a toujours de nombreuses façons très abordables de faire planter le programme avec le terminal également). Nous déterminerons ce que nous pouvons et ne pouvons pas faire un jour :)

 

Il n'est plus possible de passer aux millisecondes.

Combien d'EA déjà écrites vont commencer à générer 1000 fois plus d'événements de minuterie que ce que l'auteur avait prévu ?