關於UI控制項跨執行緒呼叫

2021-06-08 02:09:08 字數 799 閱讀 4564

這幾天,碰到乙個通過serialport口觸發ui控制項引發的ui控制項跨執行緒呼叫的問題,查了大半天,基本有三類解問決方案

1.修改control.checkforillegalcrossthreadcalls 這個屬性,變true為false,來關閉出錯報警。

2.用backgroundworker方法,也可以。

3.用invoke和invokerequired方法來寫。

用第乙個方法寫,試下來發現在呼叫gridview是會出現紅叉叉的問題,查了一下是執行緒報警,其他控制項正常。

第二方法太複雜。

第三個方法,在codeproject上查到乙個好簡單的方法,記下來分享一下

分有引數寫法和無引數寫法

1.有引數寫法

public

void withparametermethod(int parameter)

if (invokerequired)  

invoke(new methodinvoker( delegate                        ));   

else   

2.無法引數寫法

public

void noparametermethod()

if (invokerequired)      

invoke(new methodinvoker(            //

call your method again            noparametermethod            )); 

else   

方便吧,試一下!

跨執行緒修改UI控制項

1.直接修改,失敗引發異常.namespace test private void setlabeltext private void btnvisitlabel click object sender,eventargs e 2.使用 呼叫ui控制項的invoke方法修改,成功.namespace...

WPF跨執行緒更新UI控制項

1.預設情況下,在windows應用程式中,net framework不允許在乙個執行緒中直接操作另乙個執行緒中的控制項。winform中實現跨執行緒操作控制項的兩種方法 1 關閉執行緒安全檢查 control.checkforillegalcrossthreadcalls false 2 使用控制...

C 跨執行緒呼叫控制項

在c 應用程式開發中,我們經常需要把ui執行緒和工作執行緒分開程式設計,為了防止介面停止響應。同時,我們也需要在工作執行緒中去更新ui介面的控制項,在clr的執行緒安全中並不允許我們直接在工作執行緒操作ui介面。因此,介紹以下三種方式進行跨執行緒操作ui。private void button2 c...