错误:跨线程操作无效

时间:2014-08-27 03:53:19

标签: c# multithreading

以下代码给出了一个错误:“跨线程操作无效:控制'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);
}

任何人都可以建议解决方案吗?

1 个答案:

答案 0 :(得分:0)

这似乎是InvokeRequired问题。

而不是:

textBox30.Text = index.ToString();

尝试:

textBox30.Invoke(s => textBox30.Text = s, index.ToString())

更多信息:Here