Progress
Progress
Questa guida mostra come monitorare l’avanzamento delle operazioni di caricamento e salvataggio di documenti a lunga durata.
Le operazioni di caricamento e salvataggio a lunga durata possono segnalare l’avanzamento incrementale tramite una piccola coppia di callback: IDocumentLoadingCallback per il caricamento e IDocumentSavingCallback per il salvataggio. Entrambe le interfacce hanno la stessa struttura — un unico metodo Notify(args) invocato da Aspose.Words FOSS per .NET man mano che l’operazione avanza.
Monitoraggio del caricamento del documento
Implementa IDocumentLoadingCallback e assegna l’implementazione a LoadOptions.ProgressCallback prima di caricare un documento. Durante il caricamento, Notify(args) viene chiamato con un’istanza DocumentLoadingArgs la cui proprietà EstimatedProgress (un double) segnala quanto il caricamento sia progredito.
Monitoraggio del salvataggio del documento
Implementa IDocumentSavingCallback e assegnalo a SaveOptions.ProgressCallback prima di chiamare Document.Save(fileName, saveOptions) (o la versione overload dello stream). Durante il salvataggio, Notify(args) riceve un’istanza DocumentSavingArgs, che a sua volta espone EstimatedProgress come un double.
Suggerimenti e best practice
DocumentLoadingArgseDocumentSavingArgssono classi sealed il cui unico membro èEstimatedProgress— trattare la segnalazione del progresso come un segnale leggero in stile percentuale per il feedback UI, non un registro dettagliato dell’operazione.- Imposta
ProgressCallbacksull’istanzaLoadOptionsoSaveOptionsprima di passarla aDocument(fileName, loadOptions)oDocument.Save(fileName, saveOptions)— assegnarlo successivamente non ha alcun effetto su un’operazione già in corso. - Usa un’implementazione di callback separata per il caricamento rispetto al salvataggio;
IDocumentLoadingCallbackeIDocumentSavingCallbacksono interfacce distinte anche se entrambe espongono un unico metodoNotify(args).
Problemi comuni
| Problema | Cause | Correzione |
|---|---|---|
Notify(args) non viene mai chiamato | ProgressCallback non è stato impostato sull’istanza LoadOptions/SaveOptions passata alla chiamata di load o save | Assegna ProgressCallback prima di chiamare Document(fileName, loadOptions) o Document.Save(fileName, saveOptions) |
| Il callback di avanzamento è compilato con il tipo di argomento errato | IDocumentLoadingCallback.Notify accetta DocumentLoadingArgs; IDocumentSavingCallback.Notify accetta DocumentSavingArgs — non sono intercambiabili | Implementa l’interfaccia che corrisponde all’operazione (caricamento vs. salvataggio) |
FAQ
Cosa rappresenta EstimatedProgress?
È una proprietà double su DocumentLoadingArgs (durante il caricamento) o DocumentSavingArgs (durante il salvataggio) che riporta il progresso stimato di completamento dell’operazione.
Posso annullare un’operazione di caricamento o salvataggio dal callback di avanzamento?
Notify(args) su entrambe le interfacce accetta solo l’oggetto arguments (DocumentLoadingArgs o DocumentSavingArgs); nessuna espone un flag di cancellazione in questa superficie API.
Devo avere classi callback separate per il caricamento e il salvataggio?
Hai bisogno di implementazioni separate di IDocumentLoadingCallback e IDocumentSavingCallback rispettivamente, poiché sono interfacce diverse, sebbene una singola classe possa implementare entrambe.
API Reference Riepilogo
| Classe / Interfaccia | Descrizione |
|---|---|
IDocumentLoadingCallback | Notify(args) — implementa per le notifiche di avanzamento del caricamento |
IDocumentSavingCallback | Notify(args) — implementa per le notifiche di avanzamento del salvataggio |
DocumentLoadingArgs | EstimatedProgress: double — passato a IDocumentLoadingCallback.Notify |
DocumentSavingArgs | EstimatedProgress: double — passed to IDocumentSavingCallback.Notify |
LoadOptions.ProgressCallback | Allega un IDocumentLoadingCallback a un’operazione di caricamento |
SaveOptions.ProgressCallback | Allega un IDocumentSavingCallback a un’operazione di salvataggio |