Olası Çoğalt:
Getting Cross-thread operation not valid
Cross-thread operation not validÇapraz iplik operasyonu geçerli değil
Ben yeni bir işleyici oluşturmak, böylece COM portu dinlemeye çalışıyorum SerialPort.DataReceived olayı için. Mantık basit - Ben TextBox1 bir şey yazmak, Button1 tuşuna basın ve metin Label1 içinde kendini göstermelidir. Ama benim uygulama çalıştırmak istemiyorum, 'Çapraz iş parçacığı işlemi geçerli değil' hatası atıyor. Bazı arama yaptım ve Invoke nesnesini buldum - örneğimde nasıl kullanabilirim? Neden Invoke mantığını dahil etmem gerekiyor?
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: COM bağlantı noktası burada RS232 seri arabirimidir. USB'ye ve buna rağmen, PC iletişimi için seri bağlantı noktasını kullanan bir dizi aygıt (ör. GPS, Medikal) bulunmaktadır. – Sesh
@_simon_: Sadece meraklı: Bu uygulamada kullanılan COM portu nedir? –
@_simon_: Cevabımı güncelledim –