Sobre hilos:por favor, que significa este error?

02/02/2004 - 00:54 por Carla | Informe spam
"Los controles creados en un subproceso no pueden tener controles primarios
en un control en un subproceso diferente"
tengo una clase servidor que cuando le lleva un mensaje lanza un evento.esta
clase servidor dentro de si tiene varios hilos.la cosa es que funciona bien
y lanza el evento y el manejador de evento de la clase cliente tambien
funciona bien, pero cuando intento actualizar en este manejador un control
datagrid poniendo el datasource= a un array que consigo manejando la
respuesta del evento, me da el error de arriba.En cambio un cuadro de texto
que tengo si lo puedo actualizar sin problemas.
la clase cliente no tiene ningun hilo
que puede ser?

gracias y un saludo

Preguntas similare

Leer las respuestas

#1 A.Poblacion
02/02/2004 - 07:47 | Informe spam
Lo que te está ocurriendo es que los controles en pantalla de un Windows
Form no soportan funcionamiento en multihilo, y sus propiedades siempre
tienen que ser invocadas desde el hilo que los creó. Para esto tienen la
función BeginInvoke, que sí que se puede llamar desde otro hilo, y que
permite transferir la información de un hilo a otro. Busca en el manual
"BeginInvoke" y encontrarás un ejemplo de cómo se usa.

From: "Carla"
Newsgroups: microsoft.public.es.csharp
Sent: Monday, February 02, 2004 12:54 AM
Subject: Sobre hilos:por favor, que significa este error?


"Los controles creados en un subproceso no pueden tener controles


primarios
en un control en un subproceso diferente"
tengo una clase servidor que cuando le lleva un mensaje lanza un


evento.esta
clase servidor dentro de si tiene varios hilos.la cosa es que funciona


bien
y lanza el evento y el manejador de evento de la clase cliente tambien
funciona bien, pero cuando intento actualizar en este manejador un control
datagrid poniendo el datasource= a un array que consigo manejando la
respuesta del evento, me da el error de arriba.En cambio un cuadro de


texto
que tengo si lo puedo actualizar sin problemas.
la clase cliente no tiene ningun hilo
que puede ser?
Respuesta Responder a este mensaje
#2 Carla
02/02/2004 - 11:42 | Informe spam
gracias por contestar
entiendo lo que me dices y tendre que hacerlo asi, pero
estoy haciendo una clase que sera logicamente usada por
clases clientes.La clase cliente tendra que hacer
esto,usar beginInvoke siempre?
es que entonces no se, tendria que indicarlo de alguna
manera o algo, no parece muy elegante.
no hay alguna manera en la propia clase servidora de
tratar los hilos para que esto no lo tenga que hacer en
el cliente?
Te agradezco mucho la ayuda

Un saludo
Lo que te está ocurriendo es que los controles en


pantalla de un Windows
Form no soportan funcionamiento en multihilo, y sus


propiedades siempre
tienen que ser invocadas desde el hilo que los creó.


Para esto tienen la
función BeginInvoke, que sí que se puede llamar desde


otro hilo, y que
permite transferir la información de un hilo a otro.


Busca en el manual
"BeginInvoke" y encontrarás un ejemplo de cómo se usa.

From: "Carla"
Newsgroups: microsoft.public.es.csharp
Sent: Monday, February 02, 2004 12:54 AM
Subject: Sobre hilos:por favor, que significa este error?


"Los controles creados en un subproceso no pueden




tener controles
primarios
en un control en un subproceso diferente"
tengo una clase servidor que cuando le lleva un




mensaje lanza un
evento.esta
clase servidor dentro de si tiene varios hilos.la cosa




es que funciona
bien
y lanza el evento y el manejador de evento de la clase




cliente tambien
funciona bien, pero cuando intento actualizar en este




manejador un control
datagrid poniendo el datasource= a un array que




consigo manejando la
respuesta del evento, me da el error de arriba.En




cambio un cuadro de
texto
que tengo si lo puedo actualizar sin problemas.
la clase cliente no tiene ningun hilo
que puede ser?




.

Respuesta Responder a este mensaje
#3 Juan C. Olivares
02/02/2004 - 15:59 | Informe spam
Si tienes tu aplicación separada en capas, no deberías tener problemas
en hacer que el mismo proceso (cliente) trabajara todo lo relacionado con
la interfaz del usuario.

El servidor se debe limitar a enviar y recibir información, sin
involucrarse en la forma en la cual estos datos son presentados en
pantalla.

Atte,
Juan C. Olivares


On Mon, 02 Feb 2004 02:42:33 -0800, Carla wrote:

gracias por contestar
entiendo lo que me dices y tendre que hacerlo asi, pero
estoy haciendo una clase que sera logicamente usada por
clases clientes.La clase cliente tendra que hacer
esto,usar beginInvoke siempre?
es que entonces no se, tendria que indicarlo de alguna
manera o algo, no parece muy elegante.
no hay alguna manera en la propia clase servidora de
tratar los hilos para que esto no lo tenga que hacer en
el cliente?
Te agradezco mucho la ayuda

Un saludo
Lo que te está ocurriendo es que los controles en


pantalla de un Windows
Form no soportan funcionamiento en multihilo, y sus


propiedades siempre
tienen que ser invocadas desde el hilo que los creó.


Para esto tienen la
función BeginInvoke, que sí que se puede llamar desde


otro hilo, y que
permite transferir la información de un hilo a otro.


Busca en el manual
"BeginInvoke" y encontrarás un ejemplo de cómo se usa.

From: "Carla"
Newsgroups: microsoft.public.es.csharp
Sent: Monday, February 02, 2004 12:54 AM
Subject: Sobre hilos:por favor, que significa este error?


"Los controles creados en un subproceso no pueden




tener controles
primarios
en un control en un subproceso diferente"
tengo una clase servidor que cuando le lleva un




mensaje lanza un
evento.esta
clase servidor dentro de si tiene varios hilos.la cosa




es que funciona
bien
y lanza el evento y el manejador de evento de la clase




cliente tambien
funciona bien, pero cuando intento actualizar en este




manejador un control
datagrid poniendo el datasource= a un array que




consigo manejando la
respuesta del evento, me da el error de arriba.En




cambio un cuadro de
texto
que tengo si lo puedo actualizar sin problemas.
la clase cliente no tiene ningun hilo
que puede ser?




.

Respuesta Responder a este mensaje
#4 Carla
02/02/2004 - 22:48 | Informe spam
Eso es lo que deberia pasar, pero no se porque no es asi.Tengo el servidor
en un proyecto separado.Pero, ademas del error, parece como si los dos
proyectos se ejecutaran en el mismo espacio,me explico
cuando en el servidor disparo un evento y lo trato por un manejador de la
clase cliente, si este ultimo dispara una excepcion, esta es atrapada por el
metodo que disparo el evento en la clase servidor.

que es lo que estoy haciendo mal?
Gracias y un saludo



"Juan C. Olivares" escribió en el mensaje
news:
Si tienes tu aplicación separada en capas, no deberías tener problemas
en hacer que el mismo proceso (cliente) trabajara todo lo relacionado con
la interfaz del usuario.

El servidor se debe limitar a enviar y recibir información, sin
involucrarse en la forma en la cual estos datos son presentados en
pantalla.

Atte,
Juan C. Olivares


On Mon, 02 Feb 2004 02:42:33 -0800, Carla wrote:

> gracias por contestar
> entiendo lo que me dices y tendre que hacerlo asi, pero
> estoy haciendo una clase que sera logicamente usada por
> clases clientes.La clase cliente tendra que hacer
> esto,usar beginInvoke siempre?
> es que entonces no se, tendria que indicarlo de alguna
> manera o algo, no parece muy elegante.
> no hay alguna manera en la propia clase servidora de
> tratar los hilos para que esto no lo tenga que hacer en
> el cliente?
> Te agradezco mucho la ayuda
>
> Un saludo
>>Lo que te está ocurriendo es que los controles en
> pantalla de un Windows
>>Form no soportan funcionamiento en multihilo, y sus
> propiedades siempre
>>tienen que ser invocadas desde el hilo que los creó.
> Para esto tienen la
>>función BeginInvoke, que sí que se puede llamar desde
> otro hilo, y que
>>permite transferir la información de un hilo a otro.
> Busca en el manual
>>"BeginInvoke" y encontrarás un ejemplo de cómo se usa.
>>
>>From: "Carla"
>>Newsgroups: microsoft.public.es.csharp
>>Sent: Monday, February 02, 2004 12:54 AM
>>Subject: Sobre hilos:por favor, que significa este error?
>>
>>
>>> "Los controles creados en un subproceso no pueden
> tener controles
>>primarios
>>> en un control en un subproceso diferente"
>>> tengo una clase servidor que cuando le lleva un
> mensaje lanza un
>>evento.esta
>>> clase servidor dentro de si tiene varios hilos.la cosa
> es que funciona
>>bien
>>> y lanza el evento y el manejador de evento de la clase
> cliente tambien
>>> funciona bien, pero cuando intento actualizar en este
> manejador un control
>>> datagrid poniendo el datasource= a un array que
> consigo manejando la
>>> respuesta del evento, me da el error de arriba.En
> cambio un cuadro de
>>texto
>>> que tengo si lo puedo actualizar sin problemas.
>>> la clase cliente no tiene ningun hilo
>>> que puede ser?
>>
>>
>>.
>>

Respuesta Responder a este mensaje
#5 Leonardo Moreno Forero
03/02/2004 - 02:45 | Informe spam
Hola Carla,

Desde una clase servidora no puedes actualizar los controles de la parte de
presentación. Te sugiero que trabajes desde el método que recibe el
parámetro IAsyncResult el objeto MethodInvoker que te permitiría hacer una
retrollamada al metodo que inició la secuencia con BeginInvoke. O tal vez te
sirva el patrón observador para este tipo de actualizaciones. Te sugiero la
siguiente dirección:

http://msdn.microsoft.com/practices...sObserver/

Atentamente,

Leonardo Moreno Forero
MCP - MCSD
Bogotá - Colombia

"Carla" escribió en el mensaje
news:%
Eso es lo que deberia pasar, pero no se porque no es asi.Tengo el servidor
en un proyecto separado.Pero, ademas del error, parece como si los dos
proyectos se ejecutaran en el mismo espacio,me explico
cuando en el servidor disparo un evento y lo trato por un manejador de la
clase cliente, si este ultimo dispara una excepcion, esta es atrapada por


el
metodo que disparo el evento en la clase servidor.

que es lo que estoy haciendo mal?
Gracias y un saludo



"Juan C. Olivares" escribió en el mensaje
news:
> Si tienes tu aplicación separada en capas, no deberías tener problemas
> en hacer que el mismo proceso (cliente) trabajara todo lo relacionado


con
> la interfaz del usuario.
>
> El servidor se debe limitar a enviar y recibir información, sin
> involucrarse en la forma en la cual estos datos son presentados en
> pantalla.
>
> Atte,
> Juan C. Olivares
>
>
> On Mon, 02 Feb 2004 02:42:33 -0800, Carla wrote:
>
> > gracias por contestar
> > entiendo lo que me dices y tendre que hacerlo asi, pero
> > estoy haciendo una clase que sera logicamente usada por
> > clases clientes.La clase cliente tendra que hacer
> > esto,usar beginInvoke siempre?
> > es que entonces no se, tendria que indicarlo de alguna
> > manera o algo, no parece muy elegante.
> > no hay alguna manera en la propia clase servidora de
> > tratar los hilos para que esto no lo tenga que hacer en
> > el cliente?
> > Te agradezco mucho la ayuda
> >
> > Un saludo
> >>Lo que te está ocurriendo es que los controles en
> > pantalla de un Windows
> >>Form no soportan funcionamiento en multihilo, y sus
> > propiedades siempre
> >>tienen que ser invocadas desde el hilo que los creó.
> > Para esto tienen la
> >>función BeginInvoke, que sí que se puede llamar desde
> > otro hilo, y que
> >>permite transferir la información de un hilo a otro.
> > Busca en el manual
> >>"BeginInvoke" y encontrarás un ejemplo de cómo se usa.
> >>
> >>From: "Carla"
> >>Newsgroups: microsoft.public.es.csharp
> >>Sent: Monday, February 02, 2004 12:54 AM
> >>Subject: Sobre hilos:por favor, que significa este error?
> >>
> >>
> >>> "Los controles creados en un subproceso no pueden
> > tener controles
> >>primarios
> >>> en un control en un subproceso diferente"
> >>> tengo una clase servidor que cuando le lleva un
> > mensaje lanza un
> >>evento.esta
> >>> clase servidor dentro de si tiene varios hilos.la cosa
> > es que funciona
> >>bien
> >>> y lanza el evento y el manejador de evento de la clase
> > cliente tambien
> >>> funciona bien, pero cuando intento actualizar en este
> > manejador un control
> >>> datagrid poniendo el datasource= a un array que
> > consigo manejando la
> >>> respuesta del evento, me da el error de arriba.En
> > cambio un cuadro de
> >>texto
> >>> que tengo si lo puedo actualizar sin problemas.
> >>> la clase cliente no tiene ningun hilo
> >>> que puede ser?
> >>
> >>
> >>.
> >>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida