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 Сводка

Класс / ИнтерфейсОписание:
IDocumentLoadingCallbackNotify(args) — реализовать для уведомлений о прогрессе загрузки
IDocumentSavingCallbackNotify(args) — реализовать для уведомлений о прогрессе сохранения
DocumentLoadingArgsEstimatedProgress: double — передаётся в IDocumentLoadingCallback.Notify
DocumentSavingArgsEstimatedProgress: double — передаётся в IDocumentSavingCallback.Notify
LoadOptions.ProgressCallbackПрикрепляет IDocumentLoadingCallback к операции загрузки
SaveOptions.ProgressCallbackПрикрепляет IDocumentSavingCallback к операции сохранения

См. также:

 Русский