我已经使用后台工作程序实现了一个WPF应用程序,我将数据从数据库分配到组合框。
我已将可观察集合用作组合框的ItemSource。
当我尝试在后台工作程序的DoWork方法中填充可观察集合时,UI没有得到更新,但如果我将相同的代码移动到ProgressChanged或RunWorkerCompleted,那么它工作正常。
我想知道为什么DoWork方法没有更新UI。另外,更新UI的逻辑应该是ProgressChanged还是RunWorkerCompleted?
答案 0 :(得分:0)
引用MSDN:"您必须小心不要操纵DoWork事件处理程序中的任何用户界面对象" - 所以在你的DoWork方法中调用ReportProgress事件并在ProgressChanged事件处理程序中更新你的ui
答案 1 :(得分:0)
有许多在线示例显示如何正确使用BackgroundWorker
。由于您没有费心向我们展示您的代码,我们所能做的只是猜测,但我猜您还没有正确实现您的代码。不想再次复制此代码,我建议您在Stack Overflow上查看我对Progress Bar update from Background worker stalling 问题的答案。
它清楚地演示了如何正确实现BackgroundWorker
。