初始信息:如何覆蓋光標在所有線程完成
我已經從數據庫獲取數據和將其分解成邏輯部分(爲簡單起見的方法,讓我們只想說,這個數字始終是8不相等的部分)。對於每個部分,我開始一個新的後臺線程,將數據寫入數據庫。
在這樣做的時候,我最終會運行8個異步線程,全部使用相同的_DoWork()和_RunWorkerCompleted()方法。
當一個線程啓動時,它會立即添加一個後臺工作者列表。在_RunWorkerCompleted()方法中,我從列表中刪除該後臺工作人員,並檢查後臺工作人員的清單是否計數爲0;如果沒有,我繼續,如果是的話,那麼我必須讓用戶知道操作已經完成。
問題:
之前任何線程開始,我叫Mouse.OverrideCursor = Cursors.Wait;以顯示等待的光標。當一切都完成後,我必須調用Mouse.OverrideCursor = null;以強制鼠標光標恢復到正常狀態。
但是,當我在if語句中的_RunWorkerCompleted()方法中調用此函數時,詢問bw列表的計數是否爲0,我得到一個運行時異常,指出另一個線程擁有該對象。
如何調用Mouse.OverrideCursor = null;在所有線程完成後沒有運行時異常?
注:
我也一直有嘗試從_RunWorkerCompleted()方法中顯示一個消息同樣的問題。我以爲_RunWorkerCompleted()在UI線程上?
任何幫助將不勝感激。
PS,如果需要任何代碼以更好地評估問題,請詢問具體的代碼以瞭解您希望看到哪部分代碼(這些方法後面會有一些細節,我不想要通過張貼太多的代碼來混淆任何人)。
問候,
凱爾
如果您需要顯示*最少的代碼示例,而不是*描述*您的代碼,這將非常有幫助。你不需要在幕後發佈真正的代碼,但花費在完成一個簡短但完整的例子上的時間會花費很多。 –