以下代码给出了一个错误:“跨线程操作无效:控制'textBox30'从其创建的线程以外的线程访问。”
private void serialPort1_DataReceived(object sender,S ystem.IO.Ports.SerialDataReceivedEventArgs e)
{
int bytes = serialPort1.BytesToRead;
byte[] byte_buffer = new byte[bytes];
byte[] ar = new byte[20];
byte[] ssd = new byte[4];
byte[] ctrl = new byte[20];
string pp = "";
string ll = "";
serialPort1.Read(byte_buffer, 0, bytes);
int index = byte_buffer[0];
array[index] = TestSerializer.MarshalToStructureArray(byte_buffer,bytes);
textBox30.Text = index.ToString();
serialPort1.Write("N");
Thread.Sleep(1000);
}
任何人都可以建议解决方案吗?
答案 0 :(得分:0)
这似乎是InvokeRequired问题。
而不是:
textBox30.Text = index.ToString();
尝试:
textBox30.Invoke(s => textBox30.Text = s, index.ToString())
更多信息:Here