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— sealed-классы, единственный их член —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 к операции сохранения |