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:%
Mostrar la cita
acción."
Mostrar la cita
#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:
Mostrar la cita
#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:
Mostrar la cita
obtener
Mostrar la cita
si
Mostrar la cita
cada
Mostrar la cita
el
Mostrar la cita
llamando
Mostrar la cita
Thread.
Mostrar la cita
correcto
Mostrar la cita
#4 Alberto
28/11/2004 - 18:38 | Informe spam
Y cual seria lasolucion para esto ?

"Miguel Angel Campos" escribió en el
mensaje news:
Mostrar la cita
#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:
Mostrar la cita
el
Mostrar la cita
del
Mostrar la cita
WebService
Mostrar la cita
trabaja
Mostrar la cita
evento
Mostrar la cita
pero...
Mostrar la cita
en
Mostrar la cita
se
Mostrar la cita
mismo
Mostrar la cita
llamada
Mostrar la cita
Ads by Google
Search Busqueda sugerida