Temporizador - página 4

 

Tener un rango de eventos OnTimer de menos de un segundo.

Y poder medir algunos procesos en milisegundos.

No entendí para nada la idea con "...(int delay=0)", por eso lo escribí como una tontería.

 
Yedelkin:
Como habrás comprendido, en este caso mi lema es: "Abajo todos los avaros si puedes prescindir de ellos". Lo único que hay que hacer es permitir el retraso de la generación del primer evento del Temporizador en el nivel del terminal por el tiempo elegido por un usuario. No estoy menospreciando la importancia de su código, sobre todo porque simplemente no lo he visto.

¿Cómo se imagina la organización del primer evento de retraso del temporizador?

El mismo segundo temporizador se iniciará en el terminal y se generarán eventos de temporización para el Asesor Experto en un momento determinado. Todo es exactamente lo mismo que ya he sugerido.

 
stringo:

¿Cómo prevé organizar el primer evento de retraso del temporizador?

El mismo segundo temporizador se pondría en marcha en el terminal y en un momento determinado se empezarían a generar los eventos del temporizador para el Asesor Experto. Todo es absolutamente igual a lo que ya he sugerido.

Así es como me lo imagino. Habiendo encontrado la función EventSetTimer(14400, 7029) en OnInit() , el terminal activará el temporizador interno y generará el primer evento Timer exactamente a los 7029 segundos después del inicio del programa (digamos, a las 12-00), como el usuario desea. Otros eventos del temporizador se generarán a intervalos de una vez cada cuatro horas. Un evento cada 4 horas, no 14400 eventos, donde 13399 eventos del temporizador no tienen sentido para el usuario.

Este enfoque, en mi opinión, es radicalmente diferente al que usted sugiere. Porque en mi variante el segundo temporizador interno (que cuenta 7029 segundos) funcionará durante un tiempo limitado sólo después de la inicialización del Asesor Experto, y dejará su trabajo sin obstruir la cola de eventos. Su variante proporciona una generación continua de eventos cada segundo, desde el primer hasta el último minuto de trabajo del experto, de los cuales sólo cada 14400 eventos tendrán al menos algún peso para un usuario.
 
pusheax:

Tener un rango de eventos OnTimer de menos de un segundo.

Y poder medir algunos procesos en milisegundos.

En realidad el parámetro actual"int seconds// número de segundos" define la periodicidad de los eventos del temporizador, no unos "retrasos para OnTimer". Aprende las matemáticas. Respecto a los milisegundos, al menos lee la primera página del hilo para empezar.

pusheax:

No entendí para nada la idea con "...(int delay=0)" y por eso escribí que es una basura.


Ya veo. Es un poco como decir antes de que te des cuenta. No pasa nada, eso ocurre :) Todos queremos a veces compartir nuestra visión de la belleza con los demás.

 
Yedelkin:

Así es como lo veo. Habiendo encontrado la función EventSetTimer(14400, 7029) en OnInit() , el terminal activará el segundo temporizador interno y generará el primer evento Timer exactamente 7029 segundos después del inicio del programa (digamos, a las 12-00), como el usuario desea. Se generarán más eventos del temporizador a intervalos de una vez cada cuatro horas. Un evento cada 4 horas, no 14400 eventos, donde 13399 eventos del temporizador no tienen sentido para el usuario.

Este enfoque, creo, es radicalmente diferente al que usted ha sugerido. Porque en mi variante el segundo temporizador interno (que cuenta 7029 segundos) funcionará durante un tiempo limitado sólo después de la inicialización de EA, y dejará de funcionar, sin obstruir la cola de eventos. Su variante proporciona una generación continua de eventos cada segundo, desde el primer hasta el último minuto de trabajo del experto, de los cuales sólo cada 14400 eventos tendrán al menos algún peso para un usuario.

Ok

En la función OnInit inicia el temporizador EventSetTimer(7029);

En la función OnTimer a la primera llegada deshabilitar el temporizador EventKillTimer() anterior e iniciar un nuevo temporizador EventSetTimer(1440);

 
stringo:

En la función OnTimer de la primera llegada, desactiva el temporizador EventKillTimer() anterior e inicia un nuevo temporizador EventSetTimer(1440);

¿Funcionará correctamente? Alguien dijo no hace mucho que la función EventSetTimer es esencialmente para una llamada única desde el init.
 
stringo:

Ok

En la función OnInit iniciar el temporizador EventSetTimer(7029);

En la función OnTimer en la primera venida, desactivar el temporizador anterior EventKillTimer() y comenzar el nuevo temporizador EventSetTimer(1440);

¡Oh, la luz al final del túnel! ¿Llamar a EventSetTimer() dentro del propio OnTimer()? Definitivamente lo probaré cuando llegue a la terminal. Gracias por la solución inteligente.
 
TheXpert:
¿Funcionará correctamente? Alguien dijo no hace mucho que la función EventSetTimer está pensada esencialmente para ser llamada una vez desde el init.
Lo hice. Esta es una aplicación común. Lo que no invalida en absoluto los exóticos (si te apetece).
 
stringo:

Ok

En la función OnInit iniciar el temporizador EventSetTimer(7029);

En la función OnTimer en la primera venida, desactivar el temporizador anterior EventKillTimer() y comenzar el nuevo temporizador EventSetTimer(1440);

Sin embargo, en el probador este enfoque no funcionó durante un tiempo. Cambiado a contadores en el probador.

Pero todo es lírico. Los milisegundos son muy deseables. Me uno a los deseos.

Ahora necesito una resolución de tiempo de 100 ms, pero ahora tengo tantas ganas y no sé qué necesitaré mañana. No me gustaría tener un umbral de bitrate tan alto, 1000 ms es demasiado. Milisegundos es lo normal. Si alguien desborda tontamente la cola - es su tragedia (siempre hay muchas formas muy asequibles de colapsar el programa con el terminal también). Ya veremos qué podemos y qué no podemos hacer en algún momento :)

 

Ya no es posible pasar a los milisegundos.

¿Cuántos EAs ya escritos empezarán a generar 1000 veces más eventos de temporización de los que el autor pretendía?

Razón de la queja: