[問題]跨thread的共用變數

看板C_Sharp (C#)作者 (水餃)時間12年前 (2013/06/18 22:55), 編輯推噓0(0010)
留言10則, 4人參與, 最新討論串1/1
各位好,小弟有個跨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

06/19 00:48, , 1F
我認為是A的工作內容在B啟動前已經做完了
06/19 00:48, 1F

06/19 00:48, , 2F
習慣上你應該是A.Start();B.Start();
06/19 00:48, 2F

06/19 01:18, , 3F
正常只是狀態顯示 用Timer去偵測狀態即可 幹嘛Real-Time
06/19 01:18, 3F

06/19 01:19, , 4F
如果要及時 在A thread直接做Invoke(()=>{刷新內容})即可
06/19 01:19, 4F

07/21 17:38, , 5F
為什麼不直接用A刷新Label就好了?
07/21 17:38, 5F

10/20 19:44, , 6F
Hi, 不知道您解決問題了沒?請善用Backgroundworker的
10/20 19:44, 6F

10/20 19:45, , 7F
ProgressChanged,Task也有。更建議使用Task。但你的
10/20 19:45, 7F

10/20 19:46, , 8F
問題我不建議拆開兩個thread去做。因為可以在DoWork
10/20 19:46, 8F

10/20 19:47, , 9F
(假設用backgroundworker)內做累加i的動作,做完要
10/20 19:47, 9F

10/20 19:47, , 10F
用Report去對label做update就好。
10/20 19:47, 10F
文章代碼(AID): #1Hm7JQ0I (C_Sharp)
文章代碼(AID): #1Hm7JQ0I (C_Sharp)