Error: Operación no válida a través de subprocesos
Buenas noches.
Estoy realizando una aplicación que lea los datos que entran por el puerto paralelo y los muestre en un form, ejemplo: si llega 00 dos texbox muestran un mensase diciendo desactivado y dos picturebox muestran dos círculos rojos.
El problema es que cuando capturo el dato y pretendo mostrarlo me sale el siguiente error: Operación no válida a través de subprocesos: Se tuvo acceso al control 'Form1' desde un subproceso distinto a aquel en que lo creó.
Es la primera vez que me sale esto y no tengo idea de como solucionarlo, estuve leyendo y la unica solucion que dan es poner esto: Control.CheckForIllegalCrossThreadCalls = false, pero cuado lo hago la aplicacion se pone inestable y no muestra las imagenes y se bloquea.
Agradezco su ayuda.
Este es el código:
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Open();
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string datos = serialPort1.ReadExisting();
mostrar(datos);
}
public void mostrar(string strText)
{
switch (strText)
{
case "00":
pictureBox1.Visible = true;
pictureBox4.Visible = true;
pictureBox2.Visible = false;
pictureBox3.Visible = false;
textBox1.Text = "Desactivado";
textBox2.Text = "Desactivado";
break;
case "01":
pictureBox1.Visible = true;
pictureBox3.Visible = true;
pictureBox2.Visible = false;
pictureBox4.Visible = false;
textBox1.Text = "Desactivado";
textBox2.Text = "Activado";
break;
case "10":
pictureBox2.Visible = true;
pictureBox4.Visible = true;
pictureBox1.Visible = false;
pictureBox3.Visible = false;
textBox1.Text = "Activado";
textBox2.Text = "Desactivado";
break;
case "11":
pictureBox2.Visible = true;
pictureBox3.Visible = true;
pictureBox1.Visible = false;
pictureBox4.Visible = false;
textBox1.Text = "Activado";
textBox2.Text = "Activado";
break;
default:
break;
}
}
Estoy realizando una aplicación que lea los datos que entran por el puerto paralelo y los muestre en un form, ejemplo: si llega 00 dos texbox muestran un mensase diciendo desactivado y dos picturebox muestran dos círculos rojos.
El problema es que cuando capturo el dato y pretendo mostrarlo me sale el siguiente error: Operación no válida a través de subprocesos: Se tuvo acceso al control 'Form1' desde un subproceso distinto a aquel en que lo creó.
Es la primera vez que me sale esto y no tengo idea de como solucionarlo, estuve leyendo y la unica solucion que dan es poner esto: Control.CheckForIllegalCrossThreadCalls = false, pero cuado lo hago la aplicacion se pone inestable y no muestra las imagenes y se bloquea.
Agradezco su ayuda.
Este es el código:
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Open();
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string datos = serialPort1.ReadExisting();
mostrar(datos);
}
public void mostrar(string strText)
{
switch (strText)
{
case "00":
pictureBox1.Visible = true;
pictureBox4.Visible = true;
pictureBox2.Visible = false;
pictureBox3.Visible = false;
textBox1.Text = "Desactivado";
textBox2.Text = "Desactivado";
break;
case "01":
pictureBox1.Visible = true;
pictureBox3.Visible = true;
pictureBox2.Visible = false;
pictureBox4.Visible = false;
textBox1.Text = "Desactivado";
textBox2.Text = "Activado";
break;
case "10":
pictureBox2.Visible = true;
pictureBox4.Visible = true;
pictureBox1.Visible = false;
pictureBox3.Visible = false;
textBox1.Text = "Activado";
textBox2.Text = "Desactivado";
break;
case "11":
pictureBox2.Visible = true;
pictureBox3.Visible = true;
pictureBox1.Visible = false;
pictureBox4.Visible = false;
textBox1.Text = "Activado";
textBox2.Text = "Activado";
break;
default:
break;
}
}
1 respuesta
Respuesta de jorivelme