Progress
Progress
Цей посібник показує, як відстежувати прогрес довготривалих операцій завантаження та збереження документів.
Довготривалі операції завантаження та збереження можуть повідомляти про поступовий прогрес за допомогою невеликої пари зворотних викликів: IDocumentLoadingCallback для завантаження та IDocumentSavingCallback для збереження. Обидва інтерфейси мають однакову структуру — єдиний метод Notify(args), викликаний Aspose.Words FOSS для .NET у процесі виконання операції.
Моніторинг завантаження документа
Реалізуйте IDocumentLoadingCallback і призначте реалізацію LoadOptions.ProgressCallback перед завантаженням документа. Під час завантаження Notify(args) викликається з екземпляром DocumentLoadingArgs, у якого властивість EstimatedProgress (це double) повідомляє, наскільки завантаження просунулося.
Моніторинг збереження документа
Реалізуйте IDocumentSavingCallback і призначте його SaveOptions.ProgressCallback перед викликом Document.Save(fileName, saveOptions) (або його перевантаженням для потоку). Під час збереження Notify(args) отримує екземпляр DocumentSavingArgs, який також надає EstimatedProgress як double.
Поради та кращі практики
DocumentLoadingArgsіDocumentSavingArgs— це запечатані класи, єдиний їхній член —EstimatedProgress— розглядайте звітування про прогрес як легкий сигнал у відсотковому стилі для зворотного зв’язку UI, а не як детальний журнал операції.- Встановіть
ProgressCallbackна екземплярLoadOptionsабоSaveOptionsперед тим, як передати його доDocument(fileName, loadOptions)абоDocument.Save(fileName, saveOptions)— призначення його пізніше не впливає на операцію, яка вже виконується. - Використовуйте окрему реалізацію зворотного виклику для завантаження та збереження;
IDocumentLoadingCallbackіIDocumentSavingCallback— різні інтерфейси, хоча обидва надають лише один методNotify(args).
Типові проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
Notify(args) ніколи не викликається | ProgressCallback не було встановлено в LoadOptions/SaveOptions екземплярі, переданому у виклик load або save | Призначте ProgressCallback перед викликом Document(fileName, loadOptions) або Document.Save(fileName, saveOptions) |
| Зворотний виклик прогресу компілюється проти неправильного типу аргументу | IDocumentLoadingCallback.Notify приймає DocumentLoadingArgs; IDocumentSavingCallback.Notify приймає DocumentSavingArgs — вони не взаємозамінні | Реалізуйте інтерфейс, який відповідає операції (завантаження vs. збереження) |
FAQ
Що представляє EstimatedProgress?
Це властивість double у DocumentLoadingArgs (під час завантаження) або DocumentSavingArgs (під час збереження), яка повідомляє про оцінений прогрес завершення операції.
Чи можу я скасувати операцію завантаження або збереження з колбеку прогресу?
Notify(args) на обох інтерфейсах приймає лише об’єкт аргументів (DocumentLoadingArgs або DocumentSavingArgs); жоден не надає прапорець скасування у цьому API інтерфейсі.
Чи потрібні окремі класи колбеку для завантаження та збереження?
Вам потрібні окремі реалізації IDocumentLoadingCallback та IDocumentSavingCallback відповідно, оскільки це різні інтерфейси, хоча один клас може реалізувати обидва.
API Reference Підсумок
| Клас / Інтерфейс | Опис |
|---|---|
IDocumentLoadingCallback | Notify(args) — реалізувати для сповіщень про прогрес завантаження |
IDocumentSavingCallback | Notify(args) — реалізувати для сповіщень про прогрес збереження |
DocumentLoadingArgs | EstimatedProgress: double — передається до IDocumentLoadingCallback.Notify |
DocumentSavingArgs | EstimatedProgress: double — передається до IDocumentSavingCallback.Notify |
LoadOptions.ProgressCallback | Прикріплює IDocumentLoadingCallback до операції завантаження |
SaveOptions.ProgressCallback | Прикріплює IDocumentSavingCallback до операції збереження |