方法一:直接關閉異常,不檢查跨執行緒呼叫
private
void
form1_load
(object sender,
eventargs e)
方法二:利用委託
舉例1、
delegate
void
tasktype
(string sztext )
;// 這裡是因為執行緒的方法只能是object型別
void
theradtask
(object sztext )
// 如果不是主線程,那就直接做事
tasktype task =
newtasktype
( threadtask )
;// invoke這個方法帶引數必須是這個形式,和所在的theradtask方法引數個數相同就行
invoke
( task,
newobject
);}void
button1_click
(object sender,
eventargs e )
舉例2,已經開執行緒了,所以傳入的引數型別不用是object型別delegate
void
tasktype
(string szmessage,
string szname )
;void
chatacceptsocket_showmessageevent
(string szmessage,
string szname )
tasktype task =
newtasktype
( chatacceptsocket_showmessageevent )
;invoke
( task,
newobject
);}
更多可以參考: winform跨執行緒
在winform中經常用到多執行緒,那麼用多執行緒對控制項進行賦值和修改的時候呢會出現類似 該控制項不是當前執行緒建立 的錯誤資訊,在winform中兩種辦法 1.在載入事件中寫這句話,其作用呢就是執行緒的非同步呼叫 1 system.windows.forms.control.checkforil...
winform 跨執行緒操作控制項
當進行winform的開發時,經常遇到用時比較久的操作,在傳統的單執行緒程式中,使用者必須等待這個耗時操作完成以後才能進行下一步的操作,這個時候,多執行緒程式設計就派上用場了,將這個耗時的操作放到乙個新的子執行緒中,啟動子執行緒完成操作,而不影響主線程的正常工作。那麼這個時候問題來了,當在子執行緒中...
C 跨執行緒呼叫
問題 執行一下 報錯 大概意思就是跨執行緒操作,label沒法兒賦值 1.private void mainloop 8.解決方案 一 在5 6行中間新增以下 checkforillegalcrossthreadcalls false 禁止編譯器對跨執行緒訪問做檢查 二 使用deletgate in...