Progress
Progress
Αυτός ο οδηγός δείχνει πώς να παρακολουθείτε την πρόοδο των μακράς διάρκειας λειτουργιών φόρτωσης και αποθήκευσης εγγράφων.
Οι μακράς διάρκειας λειτουργίες φόρτωσης και αποθήκευσης μπορούν να αναφέρουν προοδευτική πρόοδο μέσω ενός μικρού ζεύγους callbacks: 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)— η εκχώρηση του μετά δεν έχει επίδραση σε μια λειτουργία που ήδη εκτελείται. - Χρησιμοποιήστε ξεχωριστή υλοποίηση callback για τη φόρτωση και την αποθήκευση·
IDocumentLoadingCallbackκαιIDocumentSavingCallbackείναι ξεχωριστά interfaces, παρόλο που και τα δύο εκθέτουν μια μόνο μέθοδοNotify(args).
Κοινά Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
Notify(args) δεν καλείται ποτέ | ProgressCallback δεν ορίστηκε στο αντικείμενο LoadOptions/SaveOptions που περάστηκε στην κλήση φόρτωσης ή αποθήκευσης | Ορίστε ProgressCallback πριν καλέσετε Document(fileName, loadOptions) ή Document.Save(fileName, saveOptions) |
| Η callback προόδου μεταγλωττίζεται με τον λανθασμένο τύπο ορίσματος | IDocumentLoadingCallback.Notify παίρνει DocumentLoadingArgs; IDocumentSavingCallback.Notify παίρνει DocumentSavingArgs — δεν είναι εναλλάξιμα | Υλοποιήστε τη διεπαφή που ταιριάζει στη λειτουργία (φόρτωση vs. αποθήκευση) |
FAQ
Τι αντιπροσωπεύει το EstimatedProgress;
Αυτή είναι μια ιδιότητα double στο DocumentLoadingArgs (κατά τη φόρτωση) ή στο DocumentSavingArgs (κατά την αποθήκευση) που αναφέρει την εκτιμώμενη πρόοδο ολοκλήρωσης της λειτουργίας.
Μπορώ να ακυρώσω μια ενέργεια φόρτωσης ή αποθήκευσης από το callback προόδου;
Notify(args) και στις δύο διεπαφές δέχεται μόνο το αντικείμενο arguments (DocumentLoadingArgs ή DocumentSavingArgs); κανένα δεν εκθέτει σημαία ακύρωσης σε αυτήν την επιφάνεια API.
Χρειάζομαι ξεχωριστές κλάσεις callback για τη φόρτωση και την αποθήκευση;
Χρειάζεστε ξεχωριστές υλοποιήσεις του 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 σε μια λειτουργία αποθήκευσης |