在winform中經常用到多執行緒,那麼用多執行緒對控制項進行賦值和修改的時候呢會出現類似「該控制項不是當前執行緒建立」的錯誤資訊,在winform中兩種辦法:
1.在載入事件中寫這句話,其作用呢就是執行緒的非同步呼叫
1 system.windows.forms.control.checkforillegalcrossthreadcalls = false;
2.用委託來實現執行緒對控制項的賦值操作
1public
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(newparameterizedthreadstart(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沒有多麼複雜,圖省事就直接這樣做了,之後又出了一...