小编tac*_*van的帖子

有关处理XpsDocument GetFixedDocumentSequence性能问题的任何建议吗?

我正在尝试提供XPS文档的实时预览,而不会挂起我的UI线程.打开文档的速度非常快,但是当我调用GetFixedDocumentSequence()时,我的UI会在文档突然消失时几秒钟内无响应.

// creating the doc is fine (0.005 seconds)
XpsDocument doc=new XpsDocument("BigFile.xps",FileAccess.Read);
// this hangs the UI for several seconds
FixedDocumentSequence seq=XpsDocument.GetFixedDocumentSequence();
// Once I have the sequence, GetPageAsync lets me pull out pages without breaking the UI
// ....
Run Code Online (Sandbox Code Playgroud)

显而易见的解决方案是在工作线程上打开文档,但是FixedDocumentSequence与创建它的线程绑定,所以我无法从UI线程访问它,如果我尝试从工作线程调用GetPageAsync,我得到一个例外,因为DocumentPages包含视觉效果.

我唯一能想到的是在单独的UI线程上创建文档,将文档分成页面,然后将这些页面保存为UI线程打开的XPS文件.但这似乎是一个非常复杂的解决方案.有没有人知道是否有另一种方法来获取不依赖于FixedDocumentSequence的DocumentPages?

wpf xpsdocument

5
推荐指数
1
解决办法
981
查看次数

标签 统计

wpf ×1

xpsdocument ×1