Hola a todos,
estoy desarrollando una aplicación que utiliza varios Threads.
Tiene un formulario cuyas variables tienen que ser modificados por algunos
Threads:
public class IU_Principal
{
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.MainMenu mainMenu1;
public void Anadir(string nombre)
{
System.Windows.Forms.TreeNode tn=
this.treeView1.Nodes[1].Nodes.Add(nombre);
}
}
La función Añadir añade el nombre que se le pasa como parámetro al TreeView.
Esta función es llamada por un Thread que hace lo siguiente:
Hay una clase "GestorCliente" que tiene entre sus variables la interfaz
principal:
class GestorCliente
{
private IU_Principal interfazform;
public void AnadirDesdeThread(string nombre)
{
//Llama al método "Añadir" del formulario principal
interfazform.Anadir(nombre);
//Añade el nombre en otra lista a parte... (esto no tiene importancia)
lista.Add(nombre);
}
}
El Thread lo que hace es escuchar mensajes y los tiene que añadir al
TreeView del formulario:
public void ProcedimientoDelThread()
{
string mensaje;
while(true)
{
//Recibimos mensajes que se quedarán en la variable "mensaje"
...
//Una vez tengamos el mensaje lo tenemos que añadir al formulario
//para eso llamamos al gestor, cuya variable tenemos y se llama "ges"
ges.AñadirDesdeThread(mensaje);
}
}
Al intentar asignar valores al TreeView nos devuelve un error que nos dice
que estamos utilizando un proceso no adecuado, que utilicemos BeginInvoke.
He mirado por Internet acerca de BeginInvoke y la utilización de delegados
pero no entiendo muy bien su funcionamiento ni en qué clase tendría que
declararlos y llamarlos.
Si alguien sabe acerca del tema le estaría muy agradecido por responder.
Un saludo a todos y gracias de antemano.
Black_angel.
Leer las respuestas