Threads

23/10/2006 - 23:30 por dsadas | Informe spam
Buenas, miren tengo el siguiente problema,
Tengo un Form Windos que llama a un metodo de un objecto que tarda bastante
tiempo en ejecutarse asi q me gustaria lanzarlo en un hilo de ejecución
diferente al principal.
Asi q hago esto:
DIm thread1 as New System.Threading.ThreadStart(AddressOf obj.RealizaAccion)

thread1 .BeginInvoke(New AsyncCallback(AddressOf Fin), thread1 )

Cuando termina la ejecucion se ejecuta el metodo Fin hasta ahi todo perfecto
pero el problema llega cuando intento acceder a elementos del formularios
windows me da esta excepción

Operación no válida a través de subprocesos: Se tuvo acceso al control
'Ctrl1' desde un subproceso distinto a aquel en que lo creó.

Supongo q debo escribir algo en el metodo Fin para eliminar el threa no?
Gracias!
;

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion [MVP]
24/10/2006 - 08:12 | Informe spam
"dsadas" wrote in message
news:
[...] cuando intento acceder a elementos del formularios
windows me da esta excepción

Operación no válida a través de subprocesos: Se tuvo acceso al control
'Ctrl1' desde un subproceso distinto a aquel en que lo creó.

Supongo q debo escribir algo en el metodo Fin para eliminar el threa no?



No, no tiene nada que ver con eliminar el Thread. El problema está en
que los Windows Forms no son multihilo, y solo admiten modificar su
contenido desde el mismo hilo original. Para acceder a los elementos del
formulario desde otro hilo hay que llamar al método Invoke del formulario
(este método sí que admite ser llamado desde otro hilo), pasándole la
dirección de una subrutina que es la que modifica el contenido del
formulario. El método Invoke se encarga de que esta segunda rutina sea
ejecutada en el thread correcto.
http://msdn2.microsoft.com/en-us/li...hdc6b.aspx
Respuesta Responder a este mensaje
#2 dsadas
24/10/2006 - 09:17 | Informe spam
Muchisimas gracias, por tu gran contestación.

;)


"Alberto Poblacion [MVP]" wrote:

"dsadas" wrote in message
news:
> [...] cuando intento acceder a elementos del formularios
> windows me da esta excepción
>
> Operación no válida a través de subprocesos: Se tuvo acceso al control
> 'Ctrl1' desde un subproceso distinto a aquel en que lo creó.
>
> Supongo q debo escribir algo en el metodo Fin para eliminar el threa no?

No, no tiene nada que ver con eliminar el Thread. El problema está en
que los Windows Forms no son multihilo, y solo admiten modificar su
contenido desde el mismo hilo original. Para acceder a los elementos del
formulario desde otro hilo hay que llamar al método Invoke del formulario
(este método sí que admite ser llamado desde otro hilo), pasándole la
dirección de una subrutina que es la que modifica el contenido del
formulario. El método Invoke se encarga de que esta segunda rutina sea
ejecutada en el thread correcto.
http://msdn2.microsoft.com/en-us/li...hdc6b.aspx



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida