Error

27/11/2004 - 20:33 por Alberto | Informe spam
Hola
Me esta surgiendo este error:
"La acción que se realiza en este control se está llamando desde el
subproceso erróneo. Debe calcular las referencias al subproceso correcto
utilizando Control.Invoke o Control.BeginInvoke para realizar esta acción."

alguien sabe de que puede ser?


Gracias

Preguntas similare

Leer las respuestas

#1 Miguel Angel Campos
27/11/2004 - 20:43 | Informe spam
Me imagino que estás haciendo una aplicación MultiThread, y estas llamando a
un función o propiedad de un control gráfico desde un determinado Thread.
Si es esto lo que estas haciendo tienes que tener en cuenta que sólo se
puede llamar a las propiedades y métodos de un control, desde el mismo
Thread desde el cual se creo discho control.
Los métodos Invoke y BeginInvoke te permiten realizar las llamadas desde
otros Thread distintos, siendo .NET el encargado de realizar la llamada
desde el Thread correcto.

He encontrado este ejemplo:
http://www.codeguru.com/Csharp/Csha...php/c5851/

Un Saludo.

"Alberto" escribió en el mensaje
news:%
Hola
Me esta surgiendo este error:
"La acción que se realiza en este control se está llamando desde el
subproceso erróneo. Debe calcular las referencias al subproceso correcto
utilizando Control.Invoke o Control.BeginInvoke para realizar esta


acción."

alguien sabe de que puede ser?


Gracias


Respuesta Responder a este mensaje
#2 Alberto
28/11/2004 - 00:54 | Informe spam
No estoy haciendo Multithread.
Tengo un WinForm, con un boton, y un treeview. Cree una clase que trabaja
con sockets asincronica, y al recibir un dato genero un evento, para obtener
los datos desde el WinForm. El error me lo da cuando se genera el evento y
yo desde el winform recorro una collecion del objeto (con los datos
recibidos) y quiero insertar esos objetos en un TreeView :( pero... si
en vez de insertarlo en un control hago un
MessageBox.Show(objectodecoleccion.Proiedad) me hace el MessageBox por cada
elemento sin generar error.
Alguna idea de este caso?



"Miguel Angel Campos" escribió en el
mensaje news:
Me imagino que estás haciendo una aplicación MultiThread, y estas llamando
a
un función o propiedad de un control gráfico desde un determinado Thread.
Si es esto lo que estas haciendo tienes que tener en cuenta que sólo se
puede llamar a las propiedades y métodos de un control, desde el mismo
Thread desde el cual se creo discho control.
Los métodos Invoke y BeginInvoke te permiten realizar las llamadas desde
otros Thread distintos, siendo .NET el encargado de realizar la llamada
desde el Thread correcto.

He encontrado este ejemplo:
http://www.codeguru.com/Csharp/Csha...php/c5851/

Un Saludo.

"Alberto" escribió en el mensaje
news:%
Hola
Me esta surgiendo este error:
"La acción que se realiza en este control se está llamando desde el
subproceso erróneo. Debe calcular las referencias al subproceso correcto
utilizando Control.Invoke o Control.BeginInvoke para realizar esta


acción."

alguien sabe de que puede ser?


Gracias






Respuesta Responder a este mensaje
#3 Miguel Angel Campos
28/11/2004 - 11:23 | Informe spam
El problema es que .NET está haciendo el Multithread por tí, al utilizar las
llamadas asincronas, es .NET el que realiza la llamada desde un Thread del
ThreadPool que esté disponible.

Prueba a realizar lo siguiente:
- Desde el mismo Winform muestra el valor devuelto por
System.Threading.Thread.CurrentThread.GetHashCode()
- Desde el evento generado muestra el mismo valor.

Los dos valores serán distintos.
Ese mismo problema se produce cuando realizas una llamada a un WebService de
forma asincrona e intentas establecer los datos devueltos en un control
gráfico, por ejemplo un Dataset en un DataGrid.

Un Saludo.

"Alberto" escribió en el mensaje
news:
No estoy haciendo Multithread.
Tengo un WinForm, con un boton, y un treeview. Cree una clase que trabaja
con sockets asincronica, y al recibir un dato genero un evento, para


obtener
los datos desde el WinForm. El error me lo da cuando se genera el evento y
yo desde el winform recorro una collecion del objeto (con los datos
recibidos) y quiero insertar esos objetos en un TreeView :( pero...


si
en vez de insertarlo en un control hago un
MessageBox.Show(objectodecoleccion.Proiedad) me hace el MessageBox por


cada
elemento sin generar error.
Alguna idea de este caso?



"Miguel Angel Campos" escribió en


el
mensaje news:
> Me imagino que estás haciendo una aplicación MultiThread, y estas


llamando
> a
> un función o propiedad de un control gráfico desde un determinado


Thread.
> Si es esto lo que estas haciendo tienes que tener en cuenta que sólo se
> puede llamar a las propiedades y métodos de un control, desde el mismo
> Thread desde el cual se creo discho control.
> Los métodos Invoke y BeginInvoke te permiten realizar las llamadas desde
> otros Thread distintos, siendo .NET el encargado de realizar la llamada
> desde el Thread correcto.
>
> He encontrado este ejemplo:
> http://www.codeguru.com/Csharp/Csha...php/c5851/
>
> Un Saludo.
>
> "Alberto" escribió en el mensaje
> news:%
>> Hola
>> Me esta surgiendo este error:
>> "La acción que se realiza en este control se está llamando desde el
>> subproceso erróneo. Debe calcular las referencias al subproceso


correcto
>> utilizando Control.Invoke o Control.BeginInvoke para realizar esta
> acción."
>>
>> alguien sabe de que puede ser?
>>
>>
>> Gracias
>>
>>
>
>


Respuesta Responder a este mensaje
#4 Alberto
28/11/2004 - 18:38 | Informe spam
Y cual seria lasolucion para esto ?

"Miguel Angel Campos" escribió en el
mensaje news:
El problema es que .NET está haciendo el Multithread por tí, al utilizar
las
llamadas asincronas, es .NET el que realiza la llamada desde un Thread del
ThreadPool que esté disponible.

Prueba a realizar lo siguiente:
- Desde el mismo Winform muestra el valor devuelto por
System.Threading.Thread.CurrentThread.GetHashCode()
- Desde el evento generado muestra el mismo valor.

Los dos valores serán distintos.
Ese mismo problema se produce cuando realizas una llamada a un WebService
de
forma asincrona e intentas establecer los datos devueltos en un control
gráfico, por ejemplo un Dataset en un DataGrid.

Un Saludo.

"Alberto" escribió en el mensaje
news:
No estoy haciendo Multithread.
Tengo un WinForm, con un boton, y un treeview. Cree una clase que trabaja
con sockets asincronica, y al recibir un dato genero un evento, para


obtener
los datos desde el WinForm. El error me lo da cuando se genera el evento
y
yo desde el winform recorro una collecion del objeto (con los datos
recibidos) y quiero insertar esos objetos en un TreeView :( pero...


si
en vez de insertarlo en un control hago un
MessageBox.Show(objectodecoleccion.Proiedad) me hace el MessageBox por


cada
elemento sin generar error.
Alguna idea de este caso?



"Miguel Angel Campos" escribió en


el
mensaje news:
> Me imagino que estás haciendo una aplicación MultiThread, y estas


llamando
> a
> un función o propiedad de un control gráfico desde un determinado


Thread.
> Si es esto lo que estas haciendo tienes que tener en cuenta que sólo se
> puede llamar a las propiedades y métodos de un control, desde el mismo
> Thread desde el cual se creo discho control.
> Los métodos Invoke y BeginInvoke te permiten realizar las llamadas
> desde
> otros Thread distintos, siendo .NET el encargado de realizar la llamada
> desde el Thread correcto.
>
> He encontrado este ejemplo:
> http://www.codeguru.com/Csharp/Csha...php/c5851/
>
> Un Saludo.
>
> "Alberto" escribió en el mensaje
> news:%
>> Hola
>> Me esta surgiendo este error:
>> "La acción que se realiza en este control se está llamando desde el
>> subproceso erróneo. Debe calcular las referencias al subproceso


correcto
>> utilizando Control.Invoke o Control.BeginInvoke para realizar esta
> acción."
>>
>> alguien sabe de que puede ser?
>>
>>
>> Gracias
>>
>>
>
>






Respuesta Responder a este mensaje
#5 Miguel Angel Campos
28/11/2004 - 19:05 | Informe spam
A ver si te vale este ejemplo:
http://samples.gotdotnet.com/quicks...lling.aspx

Practicamente es lo mismo que has realizado desde el principio para hacer
las llamadas a los Socket de forma asincrona. Estableces un procedimiento o
evento a donde te deben llamar, le pasas a Invoke o BeginInvoke este
procedimiento o evento, y será .NET el encargado de llamarlo desde el Thread
correspondiente.

Un Saludo.

"Alberto" escribió en el mensaje
news:
Y cual seria lasolucion para esto ?

"Miguel Angel Campos" escribió en


el
mensaje news:
> El problema es que .NET está haciendo el Multithread por tí, al utilizar
> las
> llamadas asincronas, es .NET el que realiza la llamada desde un Thread


del
> ThreadPool que esté disponible.
>
> Prueba a realizar lo siguiente:
> - Desde el mismo Winform muestra el valor devuelto por
> System.Threading.Thread.CurrentThread.GetHashCode()
> - Desde el evento generado muestra el mismo valor.
>
> Los dos valores serán distintos.
> Ese mismo problema se produce cuando realizas una llamada a un


WebService
> de
> forma asincrona e intentas establecer los datos devueltos en un control
> gráfico, por ejemplo un Dataset en un DataGrid.
>
> Un Saludo.
>
> "Alberto" escribió en el mensaje
> news:
>> No estoy haciendo Multithread.
>> Tengo un WinForm, con un boton, y un treeview. Cree una clase que


trabaja
>> con sockets asincronica, y al recibir un dato genero un evento, para
> obtener
>> los datos desde el WinForm. El error me lo da cuando se genera el


evento
>> y
>> yo desde el winform recorro una collecion del objeto (con los datos
>> recibidos) y quiero insertar esos objetos en un TreeView :(


pero...
> si
>> en vez de insertarlo en un control hago un
>> MessageBox.Show(objectodecoleccion.Proiedad) me hace el MessageBox por
> cada
>> elemento sin generar error.
>> Alguna idea de este caso?
>>
>>
>>
>> "Miguel Angel Campos" escribió


en
> el
>> mensaje news:
>> > Me imagino que estás haciendo una aplicación MultiThread, y estas
> llamando
>> > a
>> > un función o propiedad de un control gráfico desde un determinado
> Thread.
>> > Si es esto lo que estas haciendo tienes que tener en cuenta que sólo


se
>> > puede llamar a las propiedades y métodos de un control, desde el


mismo
>> > Thread desde el cual se creo discho control.
>> > Los métodos Invoke y BeginInvoke te permiten realizar las llamadas
>> > desde
>> > otros Thread distintos, siendo .NET el encargado de realizar la


llamada
>> > desde el Thread correcto.
>> >
>> > He encontrado este ejemplo:
>> > http://www.codeguru.com/Csharp/Csha...php/c5851/
>> >
>> > Un Saludo.
>> >
>> > "Alberto" escribió en el mensaje
>> > news:%
>> >> Hola
>> >> Me esta surgiendo este error:
>> >> "La acción que se realiza en este control se está llamando desde el
>> >> subproceso erróneo. Debe calcular las referencias al subproceso
> correcto
>> >> utilizando Control.Invoke o Control.BeginInvoke para realizar esta
>> > acción."
>> >>
>> >> alguien sabe de que puede ser?
>> >>
>> >>
>> >> Gracias
>> >>
>> >>
>> >
>> >
>>
>>
>
>


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