gpt4 book ai didi

wpf - 关于处理 XpsDocument GetFixedDocumentSequence 性能问题的任何建议?

转载 作者:行者123 更新时间:2023-12-03 17:59:56 31 4
gpt4 key购买 nike

我试图在不挂起 UI 线程的情况下提供 XPS 文档的实时预览。打开文档的速度足够快,但是当我调用 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
// ....

显而易见的解决方案是在工作线程上打开文档,但 FixedDocumentSequence 与创建它的线程相关联,因此我无法从 UI 线程访问它,如果我尝试从工作线程调用 GetPageAsync 我得到一个异常(exception),因为 DocumentPages 包含视觉效果。

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

最佳答案

有一个简单的解决方案。它被称为多线程 UI,它可以帮助您按照自己的方式做任何事情,但有两个 UI 线程而不是一个。这意味着您的 XPS 可以毫无问题地加载到单独的 UI 线程上。我过去自己实现过,效果很好。

http://blogs.msdn.com/b/dwayneneed/archive/2007/04/26/multithreaded-ui-hostvisual.aspx

关于wpf - 关于处理 XpsDocument GetFixedDocumentSequence 性能问题的任何建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119568/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com