2010-06-25 171 views
5

我正在尝试提供XPS文档的实时预览而不挂我的UI线程。打开文档速度够快,但是当我调用GetFixedDocumentSequence()时,我的UI在文档突然消失几秒之后变得没有响应。有关处理XpsDocument GetFixedDocumentSequence性能问题的任何建议?

// 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 
// .... 

显而易见的解决办法是打开一个工作线程的文档,但文档序列被绑定到创建它的线程,所以我不能从UI线程访问它,如果我打电话来自工作线程的GetPageAsync我得到一个异常,因为DocumentPages包含视觉效果。

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

回答