我有DataReceviedHandler,即從Rx終端讀取數據。 我想在Rx(從DataReceviedHandler)獲取數據後更改radioButton的狀態,但我得到此錯誤:「跨線程操作無效:控制'radioButton3'從線程以外的線程訪問它創建於「。 我該怎麼做才能解決?c#2事件處理程序控制相同的單選按鈕
感謝, 奧茲
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
m_ser.GetType();
m_ser.PortName = "COM28";
m_ser.BaudRate = 115200;
m_ser.Open();
m_ser.ReadTimeout = 500;
m_ser.WriteTimeout = 500;
}
private void Form1_Load(object sender, EventArgs e)
{
}
public void DataReceviedHandler(object sender, SerialDataReceivedEventArgs e)
{
byte[] m_rxUSBbuff = new byte[500];
SerialPort sptemp = (SerialPort)sender;
UInt16 rxbuffLength = (UInt16)m_ser.BytesToRead;
byte[] rxBuff = new byte[rxbuffLength];
try
{
rxbuffLength = (UInt16)sptemp.Read(rxBuff, 0, sptemp.BytesToRead);
}
catch (System.IO.IOException)
{
Console.WriteLine("Faild to Read from serial InputBuffer");
return;
}
int i;
int m_rxUSBLstMsgLength;
m_rxUSBLstMsgLength = (UInt16)rxbuffLength;
for (i = 0; i < m_rxUSBLstMsgLength; i++)
{
m_rxUSBbuff[i] = rxBuff[i];
}
switch (m_rxUSBbuff[0])
{
case 1:
radioButton1.Checked = true;
break;
case 2:
radioButton2.Checked = true;
break;
case 4:
radioButton3.Checked = true;
break;
case 8:
radioButton4.Checked = true;
break;
case 16:
radioButton5.Checked = true;
break;
default:
break;
}
}
private void CheckLeds_Click(object sender, EventArgs e)
{
byte[] txb = new byte[1] { 0xf2 };
m_ser.Write(txb, 0, 1);
}
}
從你所描述的你似乎有多個線程 - 請顯示相關的源代碼... – Yahia 2012-04-02 09:15:01