Progress

Progress

Ce guide montre comment suivre la progression des opérations de chargement et d’enregistrement de documents de longue durée.

Les opérations de chargement et d’enregistrement de longue durée peuvent rapporter une progression incrémentale via une petite paire de rappels: IDocumentLoadingCallback pour le chargement et IDocumentSavingCallback pour l’enregistrement. Les deux interfaces ont la même forme— une seule méthode Notify(args) invoquée par Aspose.Words FOSS pour .NET au fur et à mesure que l’opération progresse.


Surveillance du chargement de documents

Implémentez IDocumentLoadingCallback et assignez l’implémentation à LoadOptions.ProgressCallback avant de charger un document. Pendant le chargement, Notify(args) est appelé avec une instance DocumentLoadingArgs dont la propriété EstimatedProgress (un double) indique jusqu’où le chargement a progressé.


Surveillance de l’enregistrement de documents

Implémentez IDocumentSavingCallback et assignez-le à SaveOptions.ProgressCallback avant d’appeler Document.Save(fileName, saveOptions) (ou la surcharge de flux). Pendant l’enregistrement, Notify(args) reçoit une instance DocumentSavingArgs, qui expose également EstimatedProgress en tant que double.


Conseils et bonnes pratiques

  • DocumentLoadingArgs et DocumentSavingArgs sont des classes scellées dont le seul membre est EstimatedProgress — considérez le reporting de progression comme un signal léger de type pourcentage pour le retour d’interface utilisateur, et non comme un journal détaillé des opérations.
  • Définissez ProgressCallback sur l’instance LoadOptions ou SaveOptions avant de la transmettre à Document(fileName, loadOptions) ou Document.Save(fileName, saveOptions) — l’assigner après n’a aucun effet sur une opération déjà en cours.
  • Utilisez une implémentation de rappel distincte pour le chargement et l’enregistrement; IDocumentLoadingCallback et IDocumentSavingCallback sont des interfaces distinctes même si les deux exposent une seule méthode Notify(args).

Problèmes courants

ProblèmeCauseCorrection
Notify(args) n’est jamais appeléProgressCallback n’a pas été défini sur l’instance LoadOptions/SaveOptions transmise à l’appel de chargement ou d’enregistrementAttribuez ProgressCallback avant d’appeler Document(fileName, loadOptions) ou Document.Save(fileName, saveOptions)
Le callback de progression se compile avec le mauvais type d’argumentIDocumentLoadingCallback.Notify prend DocumentLoadingArgs; IDocumentSavingCallback.Notify prend DocumentSavingArgs — ils ne sont pas interchangeablesImplémentez l’interface qui correspond à l’opération (chargement vs. sauvegarde)

FAQ

Que représente EstimatedProgress?

Il s’agit d’une propriété double sur DocumentLoadingArgs (lors du chargement) ou DocumentSavingArgs (lors de l’enregistrement) qui indique la progression estimée de l’achèvement de l’opération.

Puis-je annuler une opération de chargement ou d’enregistrement depuis le rappel de progression?

Notify(args) sur les deux interfaces ne prend que l’objet arguments (DocumentLoadingArgs ou DocumentSavingArgs); aucun n’expose de drapeau d’annulation dans cette surface API.

Ai-je besoin de classes de rappel distinctes pour le chargement et l’enregistrement?

Vous avez besoin d’implémentations distinctes de IDocumentLoadingCallback et IDocumentSavingCallback respectivement, car ce sont des interfaces différentes, bien qu’une seule classe puisse implémenter les deux.


API Reference Résumé

Classe / InterfaceDescription
IDocumentLoadingCallbackNotify(args) — implémenter pour les notifications de progression de chargement
IDocumentSavingCallbackNotify(args) — implémenter pour les notifications de progression de sauvegarde
DocumentLoadingArgsEstimatedProgress: double — transmis à IDocumentLoadingCallback.Notify
DocumentSavingArgsEstimatedProgress: double — passé à IDocumentSavingCallback.Notify
LoadOptions.ProgressCallbackAttache un IDocumentLoadingCallback à une opération de chargement
SaveOptions.ProgressCallbackAttache un IDocumentSavingCallback à une opération d’enregistrement

Voir aussi

 Français