WPF中的任何人都可以告訴我爲什麼我們需要使用Dispatcher.BeginInvoke()方法從DoworkEvent處理程序更新UI時,我們可以通過調用DoWork中的ReportProgress()方法使用ProgressChangedEvent事件處理程序更新UI事件事件處理程序? 如果我對後臺工作人員和調度員的理解不正確,請糾正我的問題?WPF中的BackgroundWorker和Dispatcher.BeginInvoke
0
A
回答
2
有一個規則,你需要記住:
更新UI需要從UI線程來完成。
謹記這一點,讓我們看看調度員做什麼BackgroundWorker的作用:
調度 調度員是一個對象,當你調用BeginInvoke,將執行線程調度的方法被創建。應用程序的調度程序始終在UI線程上創建,因此這將起作用。
後臺工作 的後臺工作很相似,但它提供了一個基於事件的API: 當你調用ReportProgress
的DoWork的法裏面,BackgroundWorker的將提高線程的背景工人是在一個事件創建。因此,如果您在UI線程上創建Background-Worker,則可以更新ProgressChanged事件處理程序內的UI。
2
您可以安全地從BackgroundWorker的ProgressChanged處理程序更新UI,而無需調用Dispatcher。
只要您撥打ReportProgress就會引發ProgressChanged事件。它在創建BackgroundWorker實例的線程上執行,該實例通常是UI線程。
從在ReportProgress備註部分:
到ReportProgress方法的調用是異步的,並立即返回 。 ProgressChanged事件處理程序在創建BackgroundWorker的線程 上執行。
相關問題
- 1. 瞭解WPF Dispatcher.BeginInvoke
- 2. WPF和backgroundworker問題
- 3. WPF中的backgroundworker類
- 4. WPF Dispatcher.BeginInvoke代表問題
- 5. WPF/BackgroundWorker和BitmapSource問題
- 6. WPF BackgroundWorker執行
- 7. Dispatcher.BeginInvoke()
- 8. 如何使用wpf中的Dispatcher.BeginInvoke觸發事件
- 9. 在WPF中,UI的dispatcher.begininvoke方法線程安全嗎?
- 10. Dispatcher.BeginInvoke(...)如何更新WPF中的UI控件?
- 11. Dispatcher.BeginInvoke C#,Silverlight的
- 12. wpf BackgroundWorker - 關於更新UI
- 13. 使用backgroundworker更新datagrid WPF
- 14. 如何在BackgroundWorker中創建WPF窗口?
- 15. Dispatcher.BeginInvoke和Task.Factory.StartNew之間的區別
- 16. BackgroundWorker的+ WPF - >冷凍窗口
- 17. vb.net - lockwindowupdate和BackgroundWorker的
- 18. .NET的BackgroundWorker和SQLTransactions
- 19. 幫助Dispatcher.BeginInvoke
- 20. c#filesystemwatcher和backgroundworker
- 21. BackgroundWorker和Threads
- 22. BackgroundWorker中的BackgroundWorker - 錯誤處理
- 23. 線程問題與Dispatcher.Invoke和Dispatcher.BeginInvoke
- 24. 如何在WPF中的UserControl中運行BackgroundWorker?
- 25. WPF BackgroundWorker ListView過濾器問題
- 26. 使用backgroundworker更新progressbar + clipboard.getimage() - WPF C#
- 27. wpf線程,backgroundworker,調度程序
- 28. 從WinForms創建WPF窗口BackgroundWorker
- 29. WPF等待光標與BackgroundWorker線程
- 30. WPF BackGroundWorker ProgressChanged不更新文本塊
正如答案中所述,您不應該從DoWork事件處理程序更新UI,只需從進度和已完成的處理程序中更新UI。 – 2013-04-21 15:18:20