C 多執行緒操作WPF GUI控制項,串列埠資料接收傳送

2021-07-28 02:08:33 字數 1145 閱讀 4389

執行環境為vs2015,

如果直接在多執行緒中操作gui會報錯,在.net中,可以通過dispatcher.invoke來委託進行操作

具體用法示例:

節選自該程式中接收下位機傳送資料並顯示的**

1.先在其他函式

中建立並啟動執行緒

threadstart threadstart = newthreadstart(receivedata);//threadstart是乙個委託,建立乙個執行緒來在後台接收資料

thread thread = new thread(threadstart);

thread.start();//啟動後台資料接收執行緒函式receivedata

(這部分實際上因為debug的原因和後面有重複,但確實是可以實際執行的)

2.設定接收串列埠資料觸發事件,一旦串列埠緩衝池有資料就會觸發該函式

private void receivedata()

3.接收緩衝區資料,委託處理方式操作gui顯示資料

public void serialport_datareceived(object sender,serialdatareceivedeventargs e)

{ strings = "";

int count= sp.bytestoread;//緩衝資料區資料的位元組數

bytedata = new byte[count];//用於儲存緩衝資料區的資料

sp.read(data, 0, count);

foreach(byte item in data)

this.dispatcher.invoke(new action(()=> ));

4.有需要還可以加入textbox自動滾動到最後一行txtreceived.scrolltoend();

c 多執行緒操作Windows Forms控制項

解決方案如下,建立乙個windows forms專案,拖拉乙個textbox和button就可以。這需要使用委託類 啟動執行緒 private void button1 click object sender,eventargs e delegate void add 委託 public void ...

c 多執行緒操作Windows Forms控制項

解決方案如下,建立乙個windows forms專案,拖拉乙個textbox和button就可以。這需要使用委託類 啟動執行緒 private void button1 click object sender,eventargs e delegate void add 委託 public void ...

C 多執行緒操作

在.net和c 中編寫乙個多執行緒應用程式將非常得容易。即使對於那些從沒有用c 編寫過多執行緒應用程式的初學者,只需遵循以下這些簡單的步驟就可以實現目的。定義命名空間 在.net中,多執行緒功能是在system.threading命名空間中定義的。因此,在使用任何執行緒類之前,必須定義 system...