作者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