Tôi đang cố gắng cung cấp bản xem trước trực tiếp các tài liệu XPS mà không cần treo chuỗi giao diện người dùng của mình. Mở tài liệu là đủ nhanh, nhưng khi tôi gọi GetFixedDocumentSequence(), giao diện người dùng của tôi sẽ không phản hồi trong vài giây trong khi tài liệu này chuồn đi.Bất kỳ đề xuất nào để xử lý vấn đề hiệu suất GetFixedDocumentSequence XpsDocument?
// 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
// ....
Các giải pháp rõ ràng là để mở tài liệu trên một sợi công nhân, nhưng FixedDocumentSequence được gắn với các chủ đề đã tạo ra nó, vì vậy tôi không thể truy cập nó từ thread UI, và nếu tôi cố gắng gọi GetPageAsync từ chuỗi công nhân Tôi nhận được một ngoại lệ vì DocumentPages chứa hình ảnh.
Điều duy nhất tôi có thể nghĩ là tạo tài liệu trên một chuỗi giao diện người dùng riêng biệt, chia tài liệu thành các trang và sau đó lưu các trang đó dưới dạng tệp XPS mà chuỗi giao diện người dùng mở. Nhưng điều đó có vẻ như một giải pháp khủng khiếp phức tạp. Có ai biết nếu có một cách khác để có được các DocumentPages mà không dựa vào FixedDocumentSequence?