Título: Mi form se cuelga al iniciar un thread... Publicado por: Eleкtro en 29 Noviembre 2012, 19:36 pm Para los que no lo sepan, estoy diseñando un programa, y tenía un problema, la app se colgaba al darle al botón "start", hasta que "el proceso" finalizaba no podía tocar nada.
... ... Después de estar días para conseguir meter una función en un thread separado, ahora que lo he conseguido ...no hay ninguna diferencia... hasta que no finaliza "el proceso" no puedo mover el form por la pantalla, ni pulsar cualquier botón del form, ni nada, solo puedo esperar hasta que acabe... ...Espero alguna ayuda, porqué yo ya no sé que más intentar para que no se me cuelgue, no sé lo que he hecho mal. (http://img853.imageshack.us/img853/2071/prtscrcapturegq.jpg) Hasta que no se terminan de mostrar todas las líneas del richtextbox no me deja tocar NADA. ...Muchas gracias por leer. El form: Código
Título: Re: Mi form se cuelga al iniciar un thread... Publicado por: seba123neo en 29 Noviembre 2012, 21:39 pm vi tanto temas tuyos de thread, que te hice este ejemplo simple, para que veas que facil es hacer un thread, de un proceso largo que te traba toda la UI.
Código
lo que hace es simplemente sumar un valor en el textbox en un bucle infinito, que sin esto se te trabaria toda la pantalla y no podrias tocar nada, y como usa el control textbox hay que usar un delgado, de lo contrario te sale el famoso error "Operación no válida a través de subprocesos: Se tuvo acceso al control 'TextBox1' desde un subproceso distinto a aquel en que lo creó.", ese error quiere decir que no podes manipular un control del formulario, ya que este esta en un hilo diferente (el hilo de la UI), que es diferente al hilo que creas vos ahi. con esa forma podes hacer lo que se te cante. saludos. Título: Re: Mi form se cuelga al iniciar un thread... Publicado por: kub0x en 29 Noviembre 2012, 21:48 pm y como usa el control textbox hay que usar un delgado, de lo contrario te sale el famoso error "Operación no válida a través de subprocesos: Se tuvo acceso al control 'TextBox1' desde un subproceso distinto a aquel en que lo creó.", ese error quiere decir que no podes manipular un control del formulario, ya que este esta en un hilo diferente (el hilo de la UI), que es diferente al hilo que creas vos ahi. Como dato, si no quieres emplear delegados en el code, en el contexto de insertar una modificación en un control dentro de un subproceso distinto al que creo dicho control, simplemente se "fixea" el error seteando la propiedad CheckForIllegalCrossThreadCalls a False. De esta manera evitas que se compruebe que un la propiedad de un control fue modificada desde un subproceso distinto al original. Más info el la Msdn, dónde explican como utilizar dicha propiedad y su funcionamiento -> http://msdn.microsoft.com/es-es/library/system.windows.forms.control.checkforillegalcrossthreadcalls.aspx (http://msdn.microsoft.com/es-es/library/system.windows.forms.control.checkforillegalcrossthreadcalls.aspx) Saludos! Título: Re: Mi form se cuelga al iniciar un thread... Publicado por: seba123neo en 29 Noviembre 2012, 22:06 pm si, pero esa propiedad no es recomendada usar.
Título: Re: Mi form se cuelga al iniciar un thread... Publicado por: Keyen Night en 29 Noviembre 2012, 22:42 pm Hay casos en los cuales no funciona, siempre es de mejor practica usar delegados, aunque si es algo muy sencillo se puede usar pero igual no se recomienda.
Título: Re: Mi form se cuelga al iniciar un thread... Publicado por: spiritdead en 30 Noviembre 2012, 07:00 am Como dato, si no quieres emplear delegados en el code, en el contexto de insertar una modificación en un control dentro de un subproceso distinto al que creo dicho control, simplemente se "fixea" el error seteando la propiedad CheckForIllegalCrossThreadCalls a False. De esta manera evitas que se compruebe que un la propiedad de un control fue modificada desde un subproceso distinto al original. q aprenda a usar delegados, es lo mas maravilloso que puede existir en cuanto al tema de multi-hilos :DMás info el la Msdn, dónde explican como utilizar dicha propiedad y su funcionamiento -> http://msdn.microsoft.com/es-es/library/system.windows.forms.control.checkforillegalcrossthreadcalls.aspx (http://msdn.microsoft.com/es-es/library/system.windows.forms.control.checkforillegalcrossthreadcalls.aspx) Saludos! por cierto EleKtro H@cker tenes los 2 foros (este y el-hacker) spameados de consultas, no seria mejor investigar ? y hacer preguntas mas precisas :/ |