從另乙個執行緒更新GUI製作容易

2022-02-12 13:02:30 字數 856 閱讀 1911

介紹 我發現,即使是在後台執行緒中完成的簡單操作需要更新介面,也需要強制這些介面呼叫返回到相同的執行緒中,因為介面在… 經過一些研究,我發現這是用invoke方法完成的。起初,我建立了數百個委託/函式來處理每個控制項的更新,但現在,雖然我發布的這個解決方案可以更好,但至少對我來說,它節省了不少時間,所以希望它能幫助其他人…… 基本上,我們下面有乙個靜態類(thread .cs),它有一些委託,比如settext(control, string),可以讓你用一些文字設定任何控制項的文字。下面的例子是非常基本的,但是在thread .cs中還有很多其他的例子,比如在列表檢視中新增條目,改變核取方塊的複選狀態,等等。看看吧。 下面是乙個更改控制項文字屬性的基本示例。 使用 隱藏,複製code

threadsafe.settext(this.whatevercontrol, "

text to change");

並不簡單。 委託 隱藏,複製code

public

delegate

void settextdelegate(system.windows.forms.control ctrl, string text);

這定義了settext方法的簽名。 該方法 隱藏,複製code

//

generic system.windows.forms.control

public

static

void settext(system.windows.forms.control ctrl, string text)

; ctrl.invoke(new settextdelegate(settext), params_list);

}else

}

從另乙個執行緒將recvfrom從阻塞狀態喚醒

udp的多執行緒程式,一般開乙個執行緒迴圈呼叫recvfrom接收訊息,當程式中止的時候,如果這個執行緒阻塞在recvfrom呼叫,並且沒有訊息到達,則這個執行緒無法終止,造成資源洩露等問題。這裡終止這個執行緒有六種方法 1.釋放監聽的fd,這個是最簡單的方法,但是有一點要注意,就是close fd...

在乙個執行緒加鎖,另乙個執行緒解鎖

一般來講,乙個執行緒加鎖,另乙個執行緒解鎖,是很容易死鎖的。產生死鎖的四個必要條件 1 互斥條件 乙個資源每次只能被乙個程序使用。2 請求與保持條件 乙個程序因請求資源而阻塞時,對已獲得的資源保持不放。3 不剝奪條件 程序已獲得的資源,在末使用完之前,不能強行剝奪。4 迴圈等待條件 若干程序之間形成...

java 乙個執行緒控制另乙個執行緒

兩種方法,乙個用標記變數,另乙個用語法 不多說,直接 主方法一 send s new send s.start receive r new receive r.start class send extends thread s system.out.println s sleep 500 catch...