我正在开发一个有4个面板的应用程序。第一个面板显示静态图像,第二个面板加载网页。由于我将按顺序导航,我想在实际访问之前在第二个面板中加载网页。怎么实现呢?使用新线程或后台工作程序是不可能的,因为它们不是线程安全的。有没有更好的方法呢?如何加载网页而不冻结我的UI,是否可以在我实际访问它之前加载它?正如我所说的那样?
答案 0 :(得分:2)
这里没有选项,WebBrowser类基本上是线程不安全的,并且具有硬线程关联性。有办法在单独的线程上运行它,this answer向您展示如何。但只要您还需要它来在UI上呈现页面内容,那么必须编写异步代码。无论您做什么,都必须在DocumentCompleted事件处理程序中实现。一个简单的状态机可以创造奇迹。
答案 1 :(得分:-1)
Dispatcher.BeginInvoke(the_method_loading_the_page)
应该修理它。