Quote:An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll Additional information: Cross-thread operation not valid: Control 'txtReceive' accessed from a thread other than the thread it was created on.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SerialPort { public partial class Form1 : Form { public Form1() { InitializeComponent(); cmdClose.Enabled = false; foreach (String s in System.IO.Ports.SerialPort.GetPortNames()) { txtPort.Items.Add(s); } } public System.IO.Ports.SerialPort sport; public void serialport_connect(String port, int baudrate , Parity parity, int databits, StopBits stopbits) { DateTime dt = DateTime.Now; String dtn = dt.ToShortTimeString(); sport = new System.IO.Ports.SerialPort( port, baudrate, parity, databits, stopbits); try { sport.Open(); cmdClose.Enabled = true; cmdConnect.Enabled = false; txtReceive.AppendText("[" + dtn + "] " + "Connected\n"); sport.DataReceived += new SerialDataReceivedEventHandler(sport_DataReceived); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error"); } } private void sport_DataReceived(object sender, SerialDataReceivedEventArgs e) { DateTime dt = DateTime.Now; String dtn = dt.ToShortTimeString(); txtReceive.AppendText("["+dtn+"] "+"Received: "+sport.ReadExisting()+"\n"); } private void cmdConnect_Click(object sender, EventArgs e) { String port = txtPort.Text; int baudrate = Convert.ToInt32(cmbbaudrate.Text); Parity parity = (Parity)Enum.Parse(typeof(Parity), cmbparity.Text); int databits = Convert.ToInt32(cmbdatabits.Text); StopBits stopbits = (StopBits)Enum.Parse(typeof(StopBits), cmbstopbits.Text); serialport_connect(port, baudrate, parity, databits, stopbits); } private void button1_Click(object sender, EventArgs e) { DateTime dt = DateTime.Now; String dtn = dt.ToShortTimeString(); String data = txtDatatoSend.Text; sport.Write(data); txtReceive.AppendText("[" + dtn + "] " + "Sent: " + data + "\n"); } private void cmdClose_Click_1(object sender, EventArgs e) { DateTime dt = DateTime.Now; String dtn = dt.ToShortTimeString(); if (sport.IsOpen) { sport.Close(); cmdClose.Enabled = false; cmdConnect.Enabled = true; txtReceive.AppendText("[" + dtn + "] " + "Disconnected\n"); } } private void button2_Click(object sender, EventArgs e) { DateTime dt = DateTime.Now; String dtn = dt.ToShortTimeString(); const char stx = (char)2; const char etx = (char)3; sport.Write(stx + "01P00202##" + etx + "\n"); txtReceive.AppendText("[" + dtn + "] " + "Sent: 01P00202##\n"); } } }
Invoke
BeginInvoke
System.Windows.Threading.Dispatcher
System.Windows.Forms.Control
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)