我想從mod bus
協議中獲取數據,並使用標籤以窗口形式自動顯示和更新它。但是我遇到了一個問題,我不得不點擊按鈕來顯示更新的數據,而不是標籤自動顯示。我的代碼在下面,有人可以指出我錯在哪裏以及如何糾正它。非常感謝:)如何使用線程自動更新標籤
private void Call() {
do
{
RequestData(); //get data from mod bus
run(a.ToString());
} while (operation);
}
delegate void CallMethod(string Data);
private void run(string data) {
if (this.labelO2.InvokeRequired)
{
SetRichBoxCallBack d = new SetRichBoxCallBack(run);
this.Invoke(d, new object[] { data });
}
else {
labelO2.Text = data;
}
}
Thread thread;
private void button1_Click(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(Call));
thread.Start();
}
public void RequestData()
{
if (WriteSerialPort(setMessage, 0, 8))
{
Thread.Sleep(1000);
for (i = 0; i < 19; i++)
{
MM[i] = (byte)serialPortBoard.ReadByte();
}
a = MM[11] << 8 | MM[12];
b = (int)MM[13] << 8 | MM[14];
}
}
它是一個Windows窗體應用程序或者是WPF? – cvraman
這是一個Windows窗體應用程序。 – steven
爲什麼你爲同樣的問題打開另一個帖子? [http://stackoverflow.com/questions/24115077/how-to-update-a-form-from-a-thread#24115077](http://stackoverflow.com/questions/24115077/how-to-update- a-form-from-a-thread#24115077) –