Error al actualizar data grid. URGENTE!!

19/03/2006 - 19:50 por ana | Informe spam
Hola.

Esta es la segunda vez que expongo mi problema. Voy a resumirlo un poco
para ver si alguien me puede ayudar. La verdad es que he buscado información
y he lanzado mi pregunta en muchos foros pero por lo visto nadie se ha
encontrado con este problema o no sabe como resolverlo.

Tengo una ventana con un data grid. Cuando se abre la ventana se abre
también el puerto serie y cuando se lee algo de una pistola LCB conectada por
puerto serie se lanza un evento definido en otra clase y que llama a una
función de la propia clase de la ventana. En esa función llamo a otra para
refrescar el datagrid y es cuando hago el SetDataBinding del dataset con el
datagrid cuando me da el error de:

- System.ArgumentException - Controls created on a thread cannot be parented
to another thread

Qué es lo que ocurre? Se pierde el enlace o qué? Si lo hago metiendo los
datos por teclado sin utilizar evento no tengo ningún problema.
¿Alguién puede ayudarme? ¿Alguien conoce la solución?
Por favor, que alguien me conteste aunque sea para decirme que no tiene ni
idea de lo que le estoy hablando.

Muchas gracias,
Ana

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
19/03/2006 - 20:20 | Informe spam
Hola, Ana!

Parece que el problema viene por intentar refrescar la rejilla desde otro
hilo de ejecución distinto del que atiende a la interfaz de usuario - y eso,
por la arquitectura de Windows Forms, no se puede hacer directamente, sino
indirectamente a través del método Invoke() de los controles.

No sé si el hilo lo creas expresamente tú o alguna llamada a las funciones
de puerto serie, pero parece claro que está ahí.

Lee este artículo que te puede ayudar:

http://support.microsoft.com/kb/318607/en-us

Slds - Octavio



"ana" escribió en el mensaje
news:
Hola.

Esta es la segunda vez que expongo mi problema. Voy a resumirlo un poco
para ver si alguien me puede ayudar. La verdad es que he buscado
información
y he lanzado mi pregunta en muchos foros pero por lo visto nadie se ha
encontrado con este problema o no sabe como resolverlo.

Tengo una ventana con un data grid. Cuando se abre la ventana se abre
también el puerto serie y cuando se lee algo de una pistola LCB conectada
por
puerto serie se lanza un evento definido en otra clase y que llama a una
función de la propia clase de la ventana. En esa función llamo a otra
para
refrescar el datagrid y es cuando hago el SetDataBinding del dataset con
el
datagrid cuando me da el error de:

- System.ArgumentException - Controls created on a thread cannot be
parented
to another thread

Qué es lo que ocurre? Se pierde el enlace o qué? Si lo hago metiendo los
datos por teclado sin utilizar evento no tengo ningún problema.
¿Alguién puede ayudarme? ¿Alguien conoce la solución?
Por favor, que alguien me conteste aunque sea para decirme que no tiene ni
idea de lo que le estoy hablando.

Muchas gracias,
Ana
Respuesta Responder a este mensaje
#2 ana
19/03/2006 - 21:20 | Informe spam
Si, ya suponía que era eso. Este artículo ya lo había leído, pero sigo sin
poder solucionar el problema. El thread no lo creo yo, sino que lo debe de
crear para tratar el evento (no lo sé exactamente).
Y puesto que no controlo el thread y la actualización del datagrid la hago
dentro del propio Form no sé cómo adaptar el código del artículo a mi
situación. Igual se podría pero yo no sé cómo hacerlo. Y he intentado ya
tantas cosas ...

Muchas gracias,
Ana


"Octavio Hernandez" escribió:

Hola, Ana!

Parece que el problema viene por intentar refrescar la rejilla desde otro
hilo de ejecución distinto del que atiende a la interfaz de usuario - y eso,
por la arquitectura de Windows Forms, no se puede hacer directamente, sino
indirectamente a través del método Invoke() de los controles.

No sé si el hilo lo creas expresamente tú o alguna llamada a las funciones
de puerto serie, pero parece claro que está ahí.

Lee este artículo que te puede ayudar:

http://support.microsoft.com/kb/318607/en-us

Slds - Octavio



"ana" escribió en el mensaje
news:
> Hola.
>
> Esta es la segunda vez que expongo mi problema. Voy a resumirlo un poco
> para ver si alguien me puede ayudar. La verdad es que he buscado
> información
> y he lanzado mi pregunta en muchos foros pero por lo visto nadie se ha
> encontrado con este problema o no sabe como resolverlo.
>
> Tengo una ventana con un data grid. Cuando se abre la ventana se abre
> también el puerto serie y cuando se lee algo de una pistola LCB conectada
> por
> puerto serie se lanza un evento definido en otra clase y que llama a una
> función de la propia clase de la ventana. En esa función llamo a otra
> para
> refrescar el datagrid y es cuando hago el SetDataBinding del dataset con
> el
> datagrid cuando me da el error de:
>
> - System.ArgumentException - Controls created on a thread cannot be
> parented
> to another thread
>
> Qué es lo que ocurre? Se pierde el enlace o qué? Si lo hago metiendo los
> datos por teclado sin utilizar evento no tengo ningún problema.
> ¿Alguién puede ayudarme? ¿Alguien conoce la solución?
> Por favor, que alguien me conteste aunque sea para decirme que no tiene ni
> idea de lo que le estoy hablando.
>
> Muchas gracias,
> Ana



Respuesta Responder a este mensaje
#3 Octavio Hernandez
19/03/2006 - 21:49 | Informe spam
Ana,

¿Has hecho lo que sugiere el artículo? Concretamente, crear un método donde
se hace el enlace a datos y llamarlo a través de BeginInvoke()?

Slds - Octavio



"ana" escribió en el mensaje
news:
Si, ya suponía que era eso. Este artículo ya lo había leído, pero sigo
sin
poder solucionar el problema. El thread no lo creo yo, sino que lo debe
de
crear para tratar el evento (no lo sé exactamente).
Y puesto que no controlo el thread y la actualización del datagrid la hago
dentro del propio Form no sé cómo adaptar el código del artículo a mi
situación. Igual se podría pero yo no sé cómo hacerlo. Y he intentado ya
tantas cosas ...

Muchas gracias,
Ana


"Octavio Hernandez" escribió:

Hola, Ana!

Parece que el problema viene por intentar refrescar la rejilla desde otro
hilo de ejecución distinto del que atiende a la interfaz de usuario - y
eso,
por la arquitectura de Windows Forms, no se puede hacer directamente,
sino
indirectamente a través del método Invoke() de los controles.

No sé si el hilo lo creas expresamente tú o alguna llamada a las
funciones
de puerto serie, pero parece claro que está ahí.

Lee este artículo que te puede ayudar:

http://support.microsoft.com/kb/318607/en-us

Slds - Octavio



"ana" escribió en el mensaje
news:
> Hola.
>
> Esta es la segunda vez que expongo mi problema. Voy a resumirlo un
> poco
> para ver si alguien me puede ayudar. La verdad es que he buscado
> información
> y he lanzado mi pregunta en muchos foros pero por lo visto nadie se ha
> encontrado con este problema o no sabe como resolverlo.
>
> Tengo una ventana con un data grid. Cuando se abre la ventana se abre
> también el puerto serie y cuando se lee algo de una pistola LCB
> conectada
> por
> puerto serie se lanza un evento definido en otra clase y que llama a
> una
> función de la propia clase de la ventana. En esa función llamo a otra
> para
> refrescar el datagrid y es cuando hago el SetDataBinding del dataset
> con
> el
> datagrid cuando me da el error de:
>
> - System.ArgumentException - Controls created on a thread cannot be
> parented
> to another thread
>
> Qué es lo que ocurre? Se pierde el enlace o qué? Si lo hago metiendo
> los
> datos por teclado sin utilizar evento no tengo ningún problema.
> ¿Alguién puede ayudarme? ¿Alguien conoce la solución?
> Por favor, que alguien me conteste aunque sea para decirme que no tiene
> ni
> idea de lo que le estoy hablando.
>
> Muchas gracias,
> Ana



Respuesta Responder a este mensaje
#4 ana
19/03/2006 - 22:41 | Informe spam
Muchísimas gracias. Creo que ya lo he solucionado.
Gracias por tu ayuda.

Ana


"Octavio Hernandez" escribió:

Ana,

¿Has hecho lo que sugiere el artículo? Concretamente, crear un método donde
se hace el enlace a datos y llamarlo a través de BeginInvoke()?

Slds - Octavio



"ana" escribió en el mensaje
news:
> Si, ya suponía que era eso. Este artículo ya lo había leído, pero sigo
> sin
> poder solucionar el problema. El thread no lo creo yo, sino que lo debe
> de
> crear para tratar el evento (no lo sé exactamente).
> Y puesto que no controlo el thread y la actualización del datagrid la hago
> dentro del propio Form no sé cómo adaptar el código del artículo a mi
> situación. Igual se podría pero yo no sé cómo hacerlo. Y he intentado ya
> tantas cosas ...
>
> Muchas gracias,
> Ana
>
>
> "Octavio Hernandez" escribió:
>
>> Hola, Ana!
>>
>> Parece que el problema viene por intentar refrescar la rejilla desde otro
>> hilo de ejecución distinto del que atiende a la interfaz de usuario - y
>> eso,
>> por la arquitectura de Windows Forms, no se puede hacer directamente,
>> sino
>> indirectamente a través del método Invoke() de los controles.
>>
>> No sé si el hilo lo creas expresamente tú o alguna llamada a las
>> funciones
>> de puerto serie, pero parece claro que está ahí.
>>
>> Lee este artículo que te puede ayudar:
>>
>> http://support.microsoft.com/kb/318607/en-us
>>
>> Slds - Octavio
>>
>>
>>
>> "ana" escribió en el mensaje
>> news:
>> > Hola.
>> >
>> > Esta es la segunda vez que expongo mi problema. Voy a resumirlo un
>> > poco
>> > para ver si alguien me puede ayudar. La verdad es que he buscado
>> > información
>> > y he lanzado mi pregunta en muchos foros pero por lo visto nadie se ha
>> > encontrado con este problema o no sabe como resolverlo.
>> >
>> > Tengo una ventana con un data grid. Cuando se abre la ventana se abre
>> > también el puerto serie y cuando se lee algo de una pistola LCB
>> > conectada
>> > por
>> > puerto serie se lanza un evento definido en otra clase y que llama a
>> > una
>> > función de la propia clase de la ventana. En esa función llamo a otra
>> > para
>> > refrescar el datagrid y es cuando hago el SetDataBinding del dataset
>> > con
>> > el
>> > datagrid cuando me da el error de:
>> >
>> > - System.ArgumentException - Controls created on a thread cannot be
>> > parented
>> > to another thread
>> >
>> > Qué es lo que ocurre? Se pierde el enlace o qué? Si lo hago metiendo
>> > los
>> > datos por teclado sin utilizar evento no tengo ningún problema.
>> > ¿Alguién puede ayudarme? ¿Alguien conoce la solución?
>> > Por favor, que alguien me conteste aunque sea para decirme que no tiene
>> > ni
>> > idea de lo que le estoy hablando.
>> >
>> > Muchas gracias,
>> > Ana
>>
>>
>>



Respuesta Responder a este mensaje
#5 solusoft
21/03/2006 - 13:17 | Informe spam
Señora Ana puede aportar código para saber cuál fue la sólución ?

Gracias.

"ana" escribió:

Muchísimas gracias. Creo que ya lo he solucionado.
Gracias por tu ayuda.

Ana


"Octavio Hernandez" escribió:

> Ana,
>
> ¿Has hecho lo que sugiere el artículo? Concretamente, crear un método donde
> se hace el enlace a datos y llamarlo a través de BeginInvoke()?
>
> Slds - Octavio
>
>
>
> "ana" escribió en el mensaje
> news:
> > Si, ya suponía que era eso. Este artículo ya lo había leído, pero sigo
> > sin
> > poder solucionar el problema. El thread no lo creo yo, sino que lo debe
> > de
> > crear para tratar el evento (no lo sé exactamente).
> > Y puesto que no controlo el thread y la actualización del datagrid la hago
> > dentro del propio Form no sé cómo adaptar el código del artículo a mi
> > situación. Igual se podría pero yo no sé cómo hacerlo. Y he intentado ya
> > tantas cosas ...
> >
> > Muchas gracias,
> > Ana
> >
> >
> > "Octavio Hernandez" escribió:
> >
> >> Hola, Ana!
> >>
> >> Parece que el problema viene por intentar refrescar la rejilla desde otro
> >> hilo de ejecución distinto del que atiende a la interfaz de usuario - y
> >> eso,
> >> por la arquitectura de Windows Forms, no se puede hacer directamente,
> >> sino
> >> indirectamente a través del método Invoke() de los controles.
> >>
> >> No sé si el hilo lo creas expresamente tú o alguna llamada a las
> >> funciones
> >> de puerto serie, pero parece claro que está ahí.
> >>
> >> Lee este artículo que te puede ayudar:
> >>
> >> http://support.microsoft.com/kb/318607/en-us
> >>
> >> Slds - Octavio
> >>
> >>
> >>
> >> "ana" escribió en el mensaje
> >> news:
> >> > Hola.
> >> >
> >> > Esta es la segunda vez que expongo mi problema. Voy a resumirlo un
> >> > poco
> >> > para ver si alguien me puede ayudar. La verdad es que he buscado
> >> > información
> >> > y he lanzado mi pregunta en muchos foros pero por lo visto nadie se ha
> >> > encontrado con este problema o no sabe como resolverlo.
> >> >
> >> > Tengo una ventana con un data grid. Cuando se abre la ventana se abre
> >> > también el puerto serie y cuando se lee algo de una pistola LCB
> >> > conectada
> >> > por
> >> > puerto serie se lanza un evento definido en otra clase y que llama a
> >> > una
> >> > función de la propia clase de la ventana. En esa función llamo a otra
> >> > para
> >> > refrescar el datagrid y es cuando hago el SetDataBinding del dataset
> >> > con
> >> > el
> >> > datagrid cuando me da el error de:
> >> >
> >> > - System.ArgumentException - Controls created on a thread cannot be
> >> > parented
> >> > to another thread
> >> >
> >> > Qué es lo que ocurre? Se pierde el enlace o qué? Si lo hago metiendo
> >> > los
> >> > datos por teclado sin utilizar evento no tengo ningún problema.
> >> > ¿Alguién puede ayudarme? ¿Alguien conoce la solución?
> >> > Por favor, que alguien me conteste aunque sea para decirme que no tiene
> >> > ni
> >> > idea de lo que le estoy hablando.
> >> >
> >> > Muchas gracias,
> >> > Ana
> >>
> >>
> >>
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida