Título: [SOLUCIONADO] Problema con Application.DoEvents() Publicado por: Eleкtro en 16 Enero 2013, 14:19 pm Estoy teniendo problemas con esto:
Código
Cuando inicio el thread por segunda vez, me salta este error: Código: Arithmetic operation resulted in an overflow. ¿Porqué? Título: Re: Problema con Application.DoEvents() Publicado por: $Edu$ en 16 Enero 2013, 15:20 pm Pero el problema no se si esta ahi, el problema esta en el pedazo de codigo que no has puesto, donde realiza esa operacion como dice el error.
De todas formas, esta bien esa forma de usar DoEvents? si estas usando threads no seria necesario, creo yo.. que alguien me lo confirme. Título: Re: Problema con Application.DoEvents() Publicado por: Eleкtro en 16 Enero 2013, 15:30 pm Edu,
¿Como le harías tu? La intención del código de arriba es esto: Código: Thread_Split.Start() ' Ejecutar el thread Si no encuentro solución pronto arreglaré un poco el thread para postearlo... Gracias y Saludos. Título: Re: Problema con Application.DoEvents() Publicado por: Novlucker en 16 Enero 2013, 15:42 pm ¿Por que usas un thread?, si estas esperando a que el thread termine, ¿en que se diferenciaría de ejecutarlo en el "main"?
Saludos Título: Re: Problema con Application.DoEvents() Publicado por: Eleкtro en 16 Enero 2013, 15:55 pm Se diferencia en que la aplicación no se "cuelga" al usar un while + aplication.doevents() :-/
De alguna manera tengo que esperar hasta que el thread mande una respuesta como diciendo "he acabado mi trabajo", por ejemplo para cambiar el estado de un botón: Botón con texto "Start" > inicia el thread > cambia el texto a "STOP" hasta que el thread no acabe el texto del botón no vuelve a ser "Start". ¿Me entienden? Título: Re: Problema con Application.DoEvents() Publicado por: kub0x en 16 Enero 2013, 16:06 pm Application.DoEvents() es una instrucción propia de VB6 y ésto es .NET. No es recomendable emplear técnicas vb6 en VB.NET pues para algo tenemos el Framework.
Supongo que lo que quieres es que se ejecute un hilo y se detenga la ejecucción del código que sigue después de la llamada .Start() del hilo hasta que el Thread haya terminado su ejección. Empleando la clase ManualResetEvent bloqueas la ejecucción del código hasta que el objeto que contiene la instancia de ManualResetEvent haya recibido una señal. Ejemplo: Código
Título: Re: Problema con Application.DoEvents() Publicado por: Eleкtro en 16 Enero 2013, 16:12 pm Gracias Kubox, luego intento hacer eso porque es un poco lío para mí xD
De todas formas creo que el problema no tiene nada que ver con el thread. MsgBox(Thread_is_completed) ' el valor es False Me da exactamente el mismo error que he comentado en el primer comentario... aritmetic bla bla bla... Me he equivocado con eso. Título: Re: Problema con Application.DoEvents() Publicado por: $Edu$ en 16 Enero 2013, 16:26 pm Pero el error habla de una operacion aritmetica que se desborda, tienes que dejar el pedazo de codigo de tu thread
Título: Re: Problema con Application.DoEvents() Publicado por: kub0x en 16 Enero 2013, 16:43 pm El código que te puse es para que veas como trabajando con señales puedes bloquear procesos y ponerlos a la espera de una señal. En cuanto a el error que obtienes, como dice $Edu$ se produce al tratar un tipo de dato no comprendido entre los límites establecidos de dicho tipo de dato. Por ejemplo el tipo de variable Integer soporta números comprendidos entre -2147483647 y +2147483647, si te salieras de ese límite se produciría el OverFlow.
Revisa el código del Thread en busca de posibles errores en los datos que almacenas en las distintas variables. Te recomiendo que Debuguees la aplicación para ver que valores van tomando éstas. Saludos! Título: Re: Problema con Application.DoEvents() Publicado por: Eleкtro en 16 Enero 2013, 16:45 pm EDITO:
Ya lo he arreglado, era culpa de la maldita barra de progreso extendida y su propiedad "textshow",si le sumaba un valor sin que hubiera ningún valor que mostrar, da error". Saludos! Pues no, con lo de antes no me equivocaba, me salta error hasta por esto!: Código
El msgbox me salta error de operación aritmética, juas!!!! no lo entiendo... Ahora mismo me encuentro tocando todo el thread para intentar solucionarlo, lo siento si no es muy bonito ni uso técnicas tán avanzadas como la que ha comentado Kubox xD... Este es el botón que llama al thread, bueno, es un botón para llamarlo, y otro para abortarlo. Código
el thread: Código
Título: Re: Problema con Application.DoEvents() Publicado por: Novlucker en 16 Enero 2013, 17:21 pm Se diferencia en que la aplicación no se "cuelga" al usar un while + aplication.doevents() :-/ Con ese objetivo entonces si :P, aunque sigo insistiendo con el tema de los threads, ¿intentaste utilizar un backgroundworker? Te provee de eventos como RunWorkerCompleted :P Saludos Título: Re: Problema con Application.DoEvents() Publicado por: Eleкtro en 16 Enero 2013, 18:06 pm Nov lo que pasa es que el backgroundworker me da mucho palo usarlo para hilos pequeños de menos de 50 líneas, porque si uso el BGW tengo que usar todos los subs que provee el BGW para que no me vengan posibles errores, dowork, reportprogress, y el resto, en fín son bastantes y es un coñazo xD.
En otra aplicación si que uso el backgroundworker porque el thread as grandísimo, pero aquí no me vale la pena, no lo domino y luego me acabo liando con tanta cosa. Saludos! Título: Re: [SOLUCIONADO] Problema con Application.DoEvents() Publicado por: $Edu$ en 17 Enero 2013, 00:05 am El error debe estar en la ultima etiqueta de codigo que escribiste.
|