2010-06-25 27 views
5

Estoy tratando de proporcionar una vista previa en vivo de documentos XPS sin colgar mi hilo de interfaz de usuario. Abrir el documento es lo suficientemente rápido, pero cuando llamo a GetFixedDocumentSequence(), mi UI deja de responder durante varios segundos mientras el documento se escapa.¿Alguna sugerencia para tratar con XpsDocument GetFixedDocumentSequence problemas de rendimiento?

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

La solución obvia es abrir el documento en un subproceso de trabajo, pero el FixedDocumentSequence está ligado al hilo que lo creó, por lo que no se puede acceder a él desde el hilo de interfaz de usuario, y si trato de llamar GetPageAsync del subproceso de trabajo Obtengo una excepción porque DocumentPages contiene imágenes.

Lo único que se me ocurre es crear el documento en un subproceso de IU separado, dividir el documento en páginas y luego guardar esas páginas como archivos XPS que se abre el subproceso de la interfaz de usuario. Pero eso parece una solución terriblemente compleja. ¿Alguien sabe si existe una forma alternativa de obtener DocumentPages que no dependa de FixedDocumentSequence?

Respuesta

Cuestiones relacionadas