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;
}
}

1 respuesta

Respuesta
como estas pues mira cuando trabajas con serial port debes ir a administrador de dispositivos y ver los puertos com que existen, esos puertos debes configurarlos y abrirlos y utilizarlos, de preferencia es que le asignes un com unico siempre para recivir los datos ya que si tienes varios y solo lees lo que llega puede ocasionar errores, ahora tambien pruebale ese codigo Control.CheckForIllegalCrossThreadCalls = false poniendo fijo el puerto com, si te fijas el objeto serialport al instanciarlo puedes configurarle varias cosas como el COM, baudios y demas, te aconsejo que el pruebes de esa forma saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas