Progress
Progress
Acest ghid arată cum să monitorizați progresul operațiunilor de încărcare și salvare a documentelor care durează mult.
Operațiunile de încărcare și salvare de durată lungă pot raporta progres incremental printr-o pereche mică de callback-uri: IDocumentLoadingCallback pentru încărcare și IDocumentSavingCallback pentru salvare. Ambele interfețe au aceeași structură — o singură metodă Notify(args) invocată de Aspose.Words FOSS pentru .NET pe măsură ce operațiunea avansează.
Monitorizarea încărcării documentului
Implementați IDocumentLoadingCallback și atribuiți implementarea lui LoadOptions.ProgressCallback înainte de încărcarea unui document. În timpul încărcării, Notify(args) este apelat cu o instanță DocumentLoadingArgs a cărei proprietate EstimatedProgress (un double) raportează cât de mult a progresat încărcarea.
Monitorizarea salvării documentului
Implementați IDocumentSavingCallback și alocați-l lui SaveOptions.ProgressCallback înainte de invocarea lui Document.Save(fileName, saveOptions) (sau a variantei cu flux). În timpul salvării, Notify(args) primește o instanță DocumentSavingArgs, care, de asemenea, expune EstimatedProgress ca un double.
Sfaturi și bune practici
DocumentLoadingArgsșiDocumentSavingArgssunt clase sigilate al căror singur membru esteEstimatedProgress— consideră raportarea progresului ca un semnal ușor, de tip procentual, pentru feedback UI, nu ca un jurnal detaliat al operației.- Setează
ProgressCallbackpe instanțaLoadOptionssauSaveOptionsînainte de a o transmite laDocument(fileName, loadOptions)sauDocument.Save(fileName, saveOptions)— atribuirea ulterioară nu are niciun efect asupra unei operații deja în desfășurare. - Folosește o implementare de callback separată pentru încărcare și pentru salvare;
IDocumentLoadingCallbackșiIDocumentSavingCallbacksunt interfețe distincte, deși ambele expun o singură metodăNotify(args).
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
Notify(args) nu este niciodată apelat | ProgressCallback nu a fost setat pe instanța LoadOptions/SaveOptions transmisă apelului de încărcare sau salvare | Alocați ProgressCallback înainte de a apela Document(fileName, loadOptions) sau Document.Save(fileName, saveOptions) |
| Callback-ul de progres se compilează cu tipul greșit de argument | IDocumentLoadingCallback.Notify primește DocumentLoadingArgs; IDocumentSavingCallback.Notify primește DocumentSavingArgs — nu sunt interschimbabile | Implementează interfața care corespunde operației (încărcare vs. salvare) |
FAQ
Ce reprezintă EstimatedProgress?
Este o proprietate double pe DocumentLoadingArgs (în timpul încărcării) sau DocumentSavingArgs (în timpul salvării) care raportează progresul estimat al finalizării operației.
Pot să anulez o operație de încărcare sau salvare din callback-ul de progres?
Notify(args) pe ambele interfețe acceptă doar obiectul arguments (DocumentLoadingArgs sau DocumentSavingArgs); niciuna nu expune un semnal de anulare în această suprafață API.
Trebuie să am clase de callback separate pentru încărcare și salvare?
Aveți nevoie de implementări separate ale IDocumentLoadingCallback și IDocumentSavingCallback respectiv, deoarece sunt interfețe diferite, deși o singură clasă ar putea implementa ambele.
API Reference Rezumat
| Clasă / Interfață | Descriere: |
|---|---|
IDocumentLoadingCallback | Notify(args) — implement pentru notificări de progres la încărcare |
IDocumentSavingCallback | Notify(args) — implement pentru notificări de progres la salvare |
DocumentLoadingArgs | EstimatedProgress: double — transmis către IDocumentLoadingCallback.Notify |
DocumentSavingArgs | EstimatedProgress: double — transmis către IDocumentSavingCallback.Notify |
LoadOptions.ProgressCallback | Atașează un IDocumentLoadingCallback la o operație de încărcare |
SaveOptions.ProgressCallback | Atașează un IDocumentSavingCallback la o operație de salvare |