台灣最大程式設計社群網站
線上人數
1253
 
會員總數:240909
討論主題:186667
歡迎您免費加入會員
討論區列表 >> C# >> thread跨類別修改控制項
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
thread跨類別修改控制項
價值 : 30 QP  點閱數:276 回應數:2

樓主

gh .net
門外漢
0 22
166 16
發送站內信

建立一個類別物件
此物件使用thread執行計算方法
計算方法的過程中觸發事件存取主執行緒的控制項

以下是遭遇的問題 程式碼


搜尋相關Tags的文章: [ thread ] ,
本篇文章發表於2017-03-17 10:44
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

QOO
捐贈 VP 給 QOO 檢舉此回應
請參考下面這篇

MultiTHREAD修改控制項

雖然是vb.net的語法,但基本原理是相同的


delegate是一個類別,你需要指定一個sub or function給他,然後利用begininvoke去觸發

在begininvoke的方法裡,你要處裡的控制項的方式,就跟在主執行緒裡一樣了

可以用controls.find用控制項ID去尋找,或是用for each等等的方式來對控制項進行存取
本篇文章回覆於2017-03-17 12:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

史努比
檢舉此回應
跨執行緒修改控制項時, 必須將「修改控制項的程式」委託表單所屬的執行緒來執行, 否則將一律被.NET阻擋

delegate就是用來封裝「一小段程式」的物件, 他是個抽象類別, 不能直接被NEW起來

.NET 3.5之後, 可以利用泛型委派+匿名函式(lambda)的語法, 把Invoke的流程簡化




簡化成這樣. 背景執行緒只要加幾個括號就可以完成委派, 操作起來跟原來單一執行緒程式差不了太多

你應該就可以自己寫if來判斷決定要修改那一個控制項了。你的問題2用了lambda 其實沒那麼解決
本篇文章回覆於2017-03-19 19:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.