當進行winform的開發時,經常遇到用時比較久的操作,在傳統的單執行緒程式中,使用者必須等待這個耗時操作完成以後才能進行下一步的操作,這個時候,多執行緒程式設計就派上用場了,將這個耗時的操作放到乙個新的子執行緒中,啟動子執行緒完成操作,而不影響主線程的正常工作。
那麼這個時候問題來了,當在子執行緒中需要操作介面上控制項的引數時就不能簡單的操作控制項引數了,因為這會引起跨執行緒安全錯誤(子執行緒不是控制項的初始化執行緒),具體原因不多講,下面講一下怎麼解決子執行緒操作主線程式控制件的問題:
具體**如下:
//0初始;1匯入2暫停3恢復4終止
private
void buttonstate(int
state)}//
介面按鈕事件
private
void btnimport_itemclick(object
sender, itemclickeventargs e)
//執行緒函式
private
void
mythread()
public
void formstate(int
formstate)
;
//通過委託執行事件
begininvoke(new
myeventshandler(updateui_buttonstate), plist);
}else}//
事件委託
private
delegate
void myeventshandler(object
sender, myevents e);
//事件函式
private
void updateui_buttonstate(object
sender, myevents e)
//事件引數
public
class
myevents : eventargs
}
如何跨執行緒呼叫winform窗體控制項
方法一 直接關閉異常,不檢查跨執行緒呼叫private void form1 load object sender,eventargs e 方法二 利用委託 舉例1 delegate void tasktype string sztext 這裡是因為執行緒的方法只能是object型別 void th...
winform跨執行緒
在winform中經常用到多執行緒,那麼用多執行緒對控制項進行賦值和修改的時候呢會出現類似 該控制項不是當前執行緒建立 的錯誤資訊,在winform中兩種辦法 1.在載入事件中寫這句話,其作用呢就是執行緒的非同步呼叫 1 system.windows.forms.control.checkforil...
WPF 跨執行緒操作控制項
跨執行緒操作ui net2.0以來,就規定了不允許子執行緒對ui上建立的物件進行操作.在winform中,通過控制項的委託方法 control.invoke control.begininvoke 進行呼叫.而在wpf中對控制項增加了dispathcer類.dispatcher 該類的常用方法為 c...