c 執行緒中訪問主窗體控制項

2021-09-02 05:41:55 字數 664 閱讀 9448

最近做演算法的移植和demo展示,算是把大學裡的c++ c#又給複習了一遍。c#的窗體程式中,在子執行緒中訪問主線程的控制項,直接訪問會引發異常,提示不在同乙個程序裡之類的錯誤。所以,在timer控制項的定時事件或者在新執行緒裡控制進度條這種任務都會涉及到子執行緒訪問主線程裡的控制項問題。解決方案很簡單,宣告委託,然後在委託中判斷是否在主線程中,不是就利用控制項的invoke方法。

大致流程:

宣告委託

delegate void

showprogressdelegate

(int totalstep,

int currentstep)

;

委託實現

private void

showprogress

(int totalstep,

int currentstep)

else);

}}

在需要的地方呼叫

private voiddo(

)private void

theadprocess()

}

把這個移植完就可以繼續玩我的python了,python用習慣了,寫c居然會忘";",而且#include怎麼看都是注釋,重度python患者啊!

C 中的跨執行緒訪問窗體控制項

原 程式 private void button1 click object sender,eventargs e private void dopay object sender,elapsedeventargs e 執行時會報無法跨執行緒訪問 messageout 控制項 修改方法 程式 pri...

C 多執行緒窗體控制項安全訪問

c 2.0 為了執行緒安全,不充許子執行緒直接訪問窗體中的控制項 如果在子執行緒中直接訪問說窗體控制項,編譯器會提示,控制項不是 由該執行緒建立的.那麼在子執行緒中如何訪問窗體中的控制項呢?在窗體的建構函式中加入這一句 control.checkforillegalcrossthreadcalls ...

c 下執行緒訪問修改主窗體的介面資料

public static form1 f null private delegate void setcallback string str 定義乙個委託 private setcallback settextdisplaycallback 委託宣告 public form1 private vo...