這幾天,碰到乙個通過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...