Hola a todos, mientras hacia una aplicacion, en la cual agrego controles dinamicamente por asi decirlo, la aplicacion se congelaba y cerraba, asi que puse el metodo en un thread, pero al hacer eso me dio el siguiente error
Operación no válida a través de subprocesos: Se tuvo acceso al control 'Form2' desde un subproceso distinto a aquel en que lo creó.
luego de investigar un poco encontre esta solucion, quizas muchos de ustedes lo hallaran basico o inutil, pero me sirvio bastante.
Asi es como dara el error
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
delegate void crearBoton();
private void Form2_Load(object sender, EventArgs e)
{
Thread T = new Thread(new ThreadStart(NuevoBoton));
T.Start();
}
private void NuevoBoton()
{
Button B = new Button();
this.Controls.Add(B);
}
}
para hacerlo agregaremos un delegate void dentro de la clase Form2, ver si el Forn2 necesita invocacion, y si lo necesita invocar la clase pasando nuestro delegate como parametro.
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
delegate void crearBoton();
private void Form2_Load(object sender, EventArgs e)
{
Thread T = new Thread(new ThreadStart(NuevoBoton));
T.Start();
}
private void NuevoBoton()
{
if (this.InvokeRequired)
{
crearBoton CB = new crearBoton(NuevoBoton);//Creamos una instancia del delegate
//pasandole el metodo que estamos ejecutando como parametro
this.Invoke(CB); //invocamos el Form pasando el delegate void que recien creamos
}
else
{
Button B = new Button();
this.Controls.Add(B);
}
}
}
espero que a alguien le sirva