gui not updating
本文关键字:updating not gui | 更新日期: 2023-09-27 18:31:13
我的自助服务终端应用程序遇到了以下问题:
我有一个带有一些缩略图的窗口。当用户单击缩略图时,将显示另一个包含信息的窗口(docview),并在中心显示一个文档。
我希望立即显示文档视图,然后开始加载文档(文档加载需要 1-3 秒),然后将其添加到界面中。
在我单击拇指的那一刻,界面冻结了一两秒钟,然后文档视图已经与文档一起可见。
这就是我所做的:
viewgrid.Children.Add(docView); // the main window uses this grid to display the windows
viewgrid.InvalidateVisual();
viewgrid.UpdateLayout(); // at this point I would like to have the docView visible
docView.showDocument(); //and afterwards, the loading of the document should start and be also visible eventually..
我尝试使用布局更新事件,但没有成功。此外,将showDocument放在单独的线程中也无济于事。我也读过关于Application.DoEvents()的文章,但这已被弃用,而且似乎很糟糕。
我应该如何解决这个问题?
提前感谢!
您需要使用 BackgroundWorker 对象来加载文档。你说你尝试了线程,它没有用,但你需要让线程工作,我建议你使用后台工作线程。http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx
我不确定您要加载的文档类型,但我使用绑定加载了一个富文本文件,如下所述:http://www.rhyous.com/2011/08/01/loading-a-richtextbox-from-an-rtf-file-using-binding-or-a-richtextfile-control/
您只需在后台工作者中加载文档即可执行相同的操作。加载文档后,更新绑定属性,UI 将更新。
您可以尝试使用异步绑定。或者使用另一个线程和调度程序手动执行此操作。但这取决于你的ShowDocument正在做,这很慢。