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
DocumentLoadingArgsetDocumentSavingArgssont des classes scellées dont le seul membre estEstimatedProgress— 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
ProgressCallbacksur l’instanceLoadOptionsouSaveOptionsavant de la transmettre àDocument(fileName, loadOptions)ouDocument.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;
IDocumentLoadingCallbacketIDocumentSavingCallbacksont des interfaces distinctes même si les deux exposent une seule méthodeNotify(args).
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
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’enregistrement | Attribuez ProgressCallback avant d’appeler Document(fileName, loadOptions) ou Document.Save(fileName, saveOptions) |
| Le callback de progression se compile avec le mauvais type d’argument | IDocumentLoadingCallback.Notify prend DocumentLoadingArgs; IDocumentSavingCallback.Notify prend DocumentSavingArgs — ils ne sont pas interchangeables | Implé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 / Interface | Description |
|---|---|
IDocumentLoadingCallback | Notify(args) — implémenter pour les notifications de progression de chargement |
IDocumentSavingCallback | Notify(args) — implémenter pour les notifications de progression de sauvegarde |
DocumentLoadingArgs | EstimatedProgress: double — transmis à IDocumentLoadingCallback.Notify |
DocumentSavingArgs | EstimatedProgress: double — passé à IDocumentSavingCallback.Notify |
LoadOptions.ProgressCallback | Attache un IDocumentLoadingCallback à une opération de chargement |
SaveOptions.ProgressCallback | Attache un IDocumentSavingCallback à une opération d’enregistrement |