[問題] BackgroundWorker 跨執行緒作業無效
其實我是用CLI/C++寫 但我想WinForm的經驗這裡可能比較多...
我遇到的問題很有趣也很棘手
我用background worker處理multi thread的問題
結果遇到「跨執行緒作業無效」
大部分這個問題都是因為在 DoWork 存取UI元件
不過我卻不是這樣。
我把UI控制寫在 RunWorkerCompleted 裡面
本來運作也沒問題
甚至應該說大部分時候都沒問題
但加入一小段程式碼後 就在 RunWorkerCompleted 跳出「跨執行緒作業無效」
沒錯 這很奇怪 RunWorkerCompleted 使用上應該和 UI 屬於同thread
不可能遇到這種exception,而我本來也確實運作正常。
我所加入的code,是在Form1()建構子中呼叫一個對話方塊
newform.openDialog(); //註解掉這行就不會出現錯誤
之後一樣在建構子中 呼叫我的 background worker
結果就出現這個錯誤 很奇怪 兩者理當沒有關聯。
而且如果不是寫在建構子 而是按鍵觸發 就一樣能正常運作。
實測 RunWorkerCompleted 的 thread id 會變得跟 DoWork 一樣
這不科學。
聽說這可能是.NET的 backgroundworker 的bug
不知有沒有前輩對這問題比較了解的?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.171.205.52
→
09/03 19:16, , 1F
09/03 19:16, 1F
→
09/03 19:22, , 2F
09/03 19:22, 2F
→
09/03 21:41, , 3F
09/03 21:41, 3F
→
09/03 21:55, , 4F
09/03 21:55, 4F
→
09/03 21:56, , 5F
09/03 21:56, 5F
→
09/03 22:08, , 6F
09/03 22:08, 6F
推
09/03 22:09, , 7F
09/03 22:09, 7F
→
09/03 22:09, , 8F
09/03 22:09, 8F
→
09/03 22:10, , 9F
09/03 22:10, 9F
→
09/03 22:10, , 10F
09/03 22:10, 10F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章