Lectura del Puerto serie y problemas con los thread

25/05/2006 - 12:29 por Bingen | Informe spam
Hola a Todos.

Estoy realizando unas pruebas con la lectura de los puertos serie. En cuanto
a la lectura del propio puerto no tengo problemas en cuanto que Visual 2005
proporciona muchas facilidades. En problema surge en el momento de querer
visualizar los datos.

Utilizo el evento de DataReceived para detectar la recepción de datos. En la
función leo una línea del puerto y la asigno en el text de un label. Aqui me
da error de Thread, indicandome que se intenta acceder mediante un thread
que no creo el control. ¿ Alguno de ustedes podría explicarme el hecho ?, es
decir, ¿ Resulta que la lectura de puertos implica que se crea un hilo
diferente al tratamiento de la interfaz y por consiguiente debo de trabajar
con hilos ?

Muchas gracias por vuestro tiempo.
Bingen
 

Leer las respuestas

#1 Jesús López
25/05/2006 - 12:48 | Informe spam
Lo que ocurre es que el procedimiento del evento DataReceived se ejecuta en
un hilo obtenido del ThreadPool, que evidentemente no es el hilo que ejecuta
el interfaz de usuario. Como Windows Forms no es seguro para subprocesos,
sólo debe accederse al intefaz de usuario desde un único hilo, este hilo es
el hilo principal o hilo del interfaz de usuario. La solución es que desde
el procedimiento del evento DataReceived invoques a otro método de manera
que ese otro método se ejecute en el hilo principal, este "thread switch"
puede conseguirse mediante los métodos BeginInvoke e Invoke de la clase
control.

Saludos:

Jesús López



"Bingen" escribió en el mensaje
news:u209eY%

Hola a Todos.

Estoy realizando unas pruebas con la lectura de los puertos serie. En
cuanto a la lectura del propio puerto no tengo problemas en cuanto que
Visual 2005 proporciona muchas facilidades. En problema surge en el
momento de querer visualizar los datos.

Utilizo el evento de DataReceived para detectar la recepción de datos. En
la función leo una línea del puerto y la asigno en el text de un label.
Aqui me da error de Thread, indicandome que se intenta acceder mediante un
thread que no creo el control. ¿ Alguno de ustedes podría explicarme el
hecho ?, es decir, ¿ Resulta que la lectura de puertos implica que se crea
un hilo diferente al tratamiento de la interfaz y por consiguiente debo de
trabajar con hilos ?

Muchas gracias por vuestro tiempo.
Bingen




Preguntas similares