Sleep extraño ¿?
Publicado por hithwen (1 intervención) el 06/04/2007 16:03:36
Hola, estoy haciendo un pequeño interprete de un lenguaje con 3 ó 4 instrucciones. La interfaz principalmente de dos TextArea, en la primera esta el codigo a interpretar y en la segunda voy sacando mensajitos.
Una de las funciones que implementa el programa es "ejecutar paso a paso", como ando bastante verde en el asunto lo mejor que he encontrado es hacer un sleep en cada vuelta del programa mientras voy monitorizando en el TextArea de los mensajes el estado de las variables y seleccionando en el codigo la instruccion que se está ejecutando...
Mi problema es el siguiente, en los textArea no se selecciona ni se escribe nada hasta que el programa no termina del todo, entonces aparece la informacion de cada iteracion... es muy extraño porque si en vez de escribir en el textArea escribo en consola si que se escribe una linea cada segundo. ¿Alguna idea?
Este es el procedimiento al que se llama en cada iteracion si la ejecucion es paso a paso:
private void pasoApaso() throws InterruptedException {
Point pto=linea(instruccion);
ed.Texto.select(pto.x, pto.y); //Para hacer un highlight en la linea q estoy ejecutando;
sleep(1000);
ed.Texto.select(0, 0);
try {}
finally {}
monitorizar();
}
private void monitorizar(){ // Este procedimiento es el que escribe en el textArea el estado de las variables
String s="";
for (int j=0;j<variables.length;j++){
s=s+"x"+(j+1)+"="+variables[j]+", ";
}
s=s.substring(0,s.length()-2);//quitar la coma final
ed.Errores.insert(("\n"+s),(ed.Errores.getText()).length());
System.out.println(s);//<<---------Esto SI que sale cada segundo :S:S:S
}
Una de las funciones que implementa el programa es "ejecutar paso a paso", como ando bastante verde en el asunto lo mejor que he encontrado es hacer un sleep en cada vuelta del programa mientras voy monitorizando en el TextArea de los mensajes el estado de las variables y seleccionando en el codigo la instruccion que se está ejecutando...
Mi problema es el siguiente, en los textArea no se selecciona ni se escribe nada hasta que el programa no termina del todo, entonces aparece la informacion de cada iteracion... es muy extraño porque si en vez de escribir en el textArea escribo en consola si que se escribe una linea cada segundo. ¿Alguna idea?
Este es el procedimiento al que se llama en cada iteracion si la ejecucion es paso a paso:
private void pasoApaso() throws InterruptedException {
Point pto=linea(instruccion);
ed.Texto.select(pto.x, pto.y); //Para hacer un highlight en la linea q estoy ejecutando;
sleep(1000);
ed.Texto.select(0, 0);
try {}
finally {}
monitorizar();
}
private void monitorizar(){ // Este procedimiento es el que escribe en el textArea el estado de las variables
String s="";
for (int j=0;j<variables.length;j++){
s=s+"x"+(j+1)+"="+variables[j]+", ";
}
s=s.substring(0,s.length()-2);//quitar la coma final
ed.Errores.insert(("\n"+s),(ed.Errores.getText()).length());
System.out.println(s);//<<---------Esto SI que sale cada segundo :S:S:S
}
Valora esta pregunta


0