Pregunta ¿Cómo esperar por la variable?


¿Cómo puedo esperar a que una variable cambie en un hilo? Por ejemplo, quiero esperar a que cambie un número. Entonces, en lugar de usar Sleep() ¿Qué más hay ahí?

while SomeVariable > 0 do
Sleep(1);

11
2018-05-20 21:50


origen


Respuestas:


Si desea recibir una notificación cuando algo cambia, un poco de encapsulación puede ser su amigo.

Si SomeVariable es una variable y no una propiedad, cambie su declaración a const. Esto romperá todo el código que se escribe en él. Eso es bueno; el compilador lo encuentra para usted en lugar de tener que buscarlo. Luego crea un procedimiento llamado SetSomeVariable (déjelo en blanco por el momento) y cambie el código roto para llamar a esto en su lugar. Cuando todo se compile, cambie SomeVariable volver a una variable, implementar la rutina setter, y si es posible, encapsular SomeVariable por lo tanto, nada podrá establecer su valor directamente sin llamar a la nueva función. (Si se trata de una propiedad, puedes hacer todo esto mucho más simplemente declarando un colocador).

Una vez que tiene una función que establece su valor, puede introducir nuevos efectos en el proceso, como hacer que establezca la señal de un TSimpleEvent. (O, si quieres ser más sofisticado, haz que establezca la señal si el nuevo valor <> es el valor anterior).

En lugar de dormir, tenga su código WaitFor el evento. ¡Recuerde restablecerlo después!


19
2018-05-20 22:00