Duplicar posibles:
Getting Cross-thread operation not valid
Cross-thread operation not validoperación de la Cruz-hilo no válida mientras se escucha a un puerto COM
Estoy tratando de escuchar en el puerto COM para que se crea nuevo manejador para el evento SerialPort.DataReceived. La lógica es simple: escribo algo en TextBox1, presiono Button1 y mi texto debe mostrarse en Label1. Pero mi aplicación no quiere ejecutarse, porque arroja el error "Operación de hilo cruzado no válido". Realicé una búsqueda y encontré el objeto Invocar, ¿cómo puedo usarlo en mi ejemplo? ¿Por qué necesito incluir la lógica de Invocar?
namespace WindowsApplication1
{
public partial class Form1 : Form
{
SerialPort sp = new SerialPort();
public Form1()
{
InitializeComponent();
sp.DataReceived += MyDataReceivedHandler;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void MyDataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
try
{
//sp.PortName = "COM3";
//sp.Open();
Label1.Text = sp.ReadLine();
}
catch (Exception exception)
{
RichTextBox1.Text = exception.Message + "\n\n" + exception.Data;
}
finally
{
sp.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
sp.PortName = "COM3";
sp.Open();
sp.WriteLine(TextBox1.Text);
}
catch (Exception exception)
{
RichTextBox1.Text = exception.Message + "\n\n" + exception.Data;
}
finally
{
sp.Close();
}
}
}
}
@ Peter: puerto COM aquí es la interfaz serie RS232. A pesar del USB y de todo, todavía hay una serie de dispositivos (por ejemplo, GPS, médicos) que utilizan el puerto serie para la comunicación de PC. – Sesh
@_simon_: Simplemente curioso: ¿para qué sirve el puerto COM en esta aplicación en particular? –
@_simon_: Actualicé mi respuesta –