有沒有人遇到過這個?分派器有時會在應用程序啓動後立即進入狀態,以停止處理其隊列。隊列只是構建和構建的,分派器什麼也不做。 UI線程是響應式的。最好的部分是這個問題是非確定性的。有時會出現,有時卻不會。如果我在啓動時加載一個大文件,則更有可能出現。我的應用程序做了很多事情,我不知道從哪裏開始調試。希望我只能檢查Dispatcher的代碼,但這就是您在使用閉源框架時所得到的結果。該死的MS和該死的Silverlight。Silverlight調度器鎖定,停止隊列中的處理任務
回答
這不回答你的問題,但這裏是從Telerik的一個免費的工具,您可以使用檢查的調度程序代碼:
http://www.telerik.com/products/decompiler.aspx
你也可以使用反射,但它不是免費的(14天試用版):
http://www.reflector.net/
好主意!令人驚訝的是,Dispatcher代碼非常簡短。但是..什麼是與調試器一起使用反編譯代碼的最佳方式?我似乎記得其中一個工具(也許是DotPeek)可以讓你自動執行該操作,但我在VS 2012中看不到該選項。 –
Reflector幫助調試Dispatcher(它生成PDB並集成良好)。看起來Silverlight Dispatcher只是一個本地代碼調度器的薄包裝器。包裝器只處理BeginInvoke委託的排隊,並在本地調度器在Dispatcher上調用回調時運行它們。當隊列爲空並且第一個委託排隊時,Dispatcher會提醒RuntimeHost它應該在發生機會時回調Dispatcher。
我對這個bug的理論(當運行Out-of-Browser時肯定會發生,但不確定是否在瀏覽器中)是,如果Dispatcher請求RuntimeHost在錯誤的時間回調(例如,應用程序啓動未完成或者當RuntimeHost正在處理很多新的UI元素......不能說完全),RuntimeHost忘記了回調。調度員從不再次詢問,從不做任何工作。
解決方法可能是使用DispatcherTimer(這似乎沒有錯誤...當Dispatcher卡住了,我的DispatcherTimers繼續滴答滴答)。 Dispatcher的最簡單的替代方案可能是複製Dispatcher反編譯的源代碼,其中包含一個基於DispatcherTimer的代碼路徑。
- 1. 如何停止執行調度隊列中的任務?
- 2. Python中的任務隊列處理
- 3. 任務隊列停止工作
- 4. ColdFusion郵件隊列停止處理
- 5. 如何停止調度隊列
- 6. Javascript任務調度器(批處理)
- 7. Celeryd Worker停止處理任務
- 8. 任務錯誤處理 - Visual Studio停止
- 9. Plone的MailHost隊列處理器線程在啓動時停止
- 10. 排隊調度任務
- 11. NetPipeActivator服務停止處理調用
- 12. 停止處理器運行的任務破壞活性
- 13. 正在停止<任務:調度程序>任務
- 14. Azure批處理microtask並行處理(修改任務隊列)
- 15. 停止Python多處理BaseManager'serve_forever'服務器?
- 16. Socket.io - 服務器停止處理
- 17. 調度程序在Spring事務中發生死鎖時停止
- 18. python多處理調度任務
- 19. 多任務處理:停止後臺音頻在特定時間
- 20. 創建服務器處理隊列
- 21. 暫停調度隊列暫停其目標隊列嗎?
- 22. java中的GAE任務隊列處理時間
- 23. 單處理器系統可以處理多級隊列調度嗎?
- 24. Silverlight 4雙工服務 - 停止回調
- 25. 停止從任務管理器WPF顯示'任務'窗口#
- 26. 如何同步不同調度隊列中的任務?
- 27. 在monodevelop中停止活動時處理任務
- 28. 我可以在Google AppEngine拉取任務隊列中封鎖任務,直到任務可用爲止嗎?
- 29. Nodejs sqs隊列處理器
- 30. PushSharp Push不會處理隊列,直到停止
嗨@Aleksandr你有沒有得到解決這個問題的方法?如果您可以分享您可能獲得的任何解決方案,我們將非常感激。 –
@SarafTalukder嗯,我在答案中寫了一些東西。你注意到了嗎?無論如何,我現在不記得這個問題了。 –