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

2021-09-29 05:05:36 字數 1004 閱讀 4957

方法一:直接關閉異常,不檢查跨執行緒呼叫

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...