winform跨執行緒

2022-03-19 02:50:26 字數 750 閱讀 1583

在winform中經常用到多執行緒,那麼用多執行緒對控制項進行賦值和修改的時候呢會出現類似「該控制項不是當前執行緒建立」的錯誤資訊,在winform中兩種辦法:

1.在載入事件中寫這句話,其作用呢就是執行緒的非同步呼叫

1 system.windows.forms.control.checkforillegalcrossthreadcalls = false;

2.用委託來實現執行緒對控制項的賦值操作

1

public

delegate

void outdelegate(string

text);

2public

void outtext(string

text)

37 outdelegate outdelegate = new

outdelegate( outtext );

8this.begininvoke(outdelegate, new

object);

補充一句:

在winform中建立帶引數的執行緒,可以這麼寫

1 thread thread = new thread(new

parameterizedthreadstart(getweathering));23

thread.start(combobox4.text);45

67void getweathering(string

temptext)

89 {}

winform 跨執行緒操作控制項

當進行winform的開發時,經常遇到用時比較久的操作,在傳統的單執行緒程式中,使用者必須等待這個耗時操作完成以後才能進行下一步的操作,這個時候,多執行緒程式設計就派上用場了,將這個耗時的操作放到乙個新的子執行緒中,啟動子執行緒完成操作,而不影響主線程的正常工作。那麼這個時候問題來了,當在子執行緒中...

如何跨執行緒呼叫winform窗體控制項

方法一 直接關閉異常,不檢查跨執行緒呼叫private void form1 load object sender,eventargs e 方法二 利用委託 舉例1 delegate void tasktype string sztext 這裡是因為執行緒的方法只能是object型別 void th...

Winform 讓跨執行緒訪問變得更簡單

由於多執行緒可能導致對控制項訪問的不一致,導致出現問題。c 中預設是要執行緒安全的,即在訪問控制項時需要首先判斷是否跨執行緒,如果是跨執行緒的直接訪問,在執行時會丟擲異常。近期在專案中碰到這個問題,首先想到的是,關閉跨執行緒檢查,因為做的winform沒有多麼複雜,圖省事就直接這樣做了,之後又出了一...