作者teamspike (市政府7F)
看板C_Sharp
標題Re: [問題] 試問backgroundworker與thread兩個類別 …
時間Tue Jan 6 15:33:58 2009
※ 引述《teamspike (市政府7F)》之銘言:
: ※ 引述《regionbbs (小朱)》之銘言:
: : BackgroundWorker 只是把跨執行緒的作業簡化而已,
: : 用 ReportProgress() 和處理 ProgressChanged 事件就能做到了。
: : 基本的原理還是用函式委派和 Control.Invoke() 來做。
: 感謝各位的解答,讓我對於跨執行緒的做法有了初步的概念
: 不過現在遇到了新的問題
: 我發現只要有兩個以上的執行緒同時存取主執行緒的同一個控制項
: (在此是使用MediaPlayer物件)
: 就算是使用安全性呼叫(使用委派)
: 兩個執行緒Start()以後會同時卡住
: 可是執行個別單一的執行緒都可以順利執行
: 是不是我遺漏了些什麼步驟?
: 謝謝
其中一個執行緒是使用Label.InvokeRequired屬性來做delegate
另一個是用MediaPlayer.Dispatcher.CheckAccess()方法來做delegate
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.216.193
→ teamspike:是不是要在適當的地方加Thread.sleep()呢? 01/06 15:58
→ teamspike:似乎是遇上race condition 01/06 17:14