作者sweetjp6 (水餃)
看板C_Sharp
標題[問題]跨thread的共用變數
時間Tue Jun 18 22:55:20 2013
各位好,小弟有個跨thread的問題想請教,
請各位先進幫忙,問題如下:
我有一個共用變數: int i
在UI thread new出兩個新的thread A, B
A thread對共用變數i做++
當A thread完成i++之後 B馬上將i的結果秀在label上
目前嘗試了lock以及autoevent,但這兩種方法都只會將
i最後的結果顯示出來。
請問有什麼辦法能夠即時顯示i的每次變化呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.105.148.177
1F:→ optimist9266:我認為是A的工作內容在B啟動前已經做完了 06/19 00:48
2F:→ optimist9266:習慣上你應該是A.Start();B.Start(); 06/19 00:48
3F:→ ghostx2:正常只是狀態顯示 用Timer去偵測狀態即可 幹嘛Real-Time 06/19 01:18
4F:→ ghostx2:如果要及時 在A thread直接做Invoke(()=>{刷新內容})即可 06/19 01:19
5F:→ jenesis:為什麼不直接用A刷新Label就好了? 07/21 17:38
6F:→ singledream:Hi, 不知道您解決問題了沒?請善用Backgroundworker的 10/20 19:44
7F:→ singledream:ProgressChanged,Task也有。更建議使用Task。但你的 10/20 19:45
8F:→ singledream:問題我不建議拆開兩個thread去做。因為可以在DoWork 10/20 19:46
9F:→ singledream:(假設用backgroundworker)內做累加i的動作,做完要 10/20 19:47
10F:→ singledream:用Report去對label做update就好。 10/20 19:47