Progress
Progress
Este guia mostra como acompanhar o progresso de operações de carregamento e salvamento de documentos de longa duração.
Operações de carregamento e salvamento de longa duração podem relatar progresso incremental por meio de um pequeno par de callbacks: IDocumentLoadingCallback para carregamento e IDocumentSavingCallback para salvamento. Ambas as interfaces seguem o mesmo formato — um único método Notify(args) invocado por Aspose.Words FOSS para .NET à medida que a operação avança.
Monitoramento do Carregamento de Documentos
Implemente IDocumentLoadingCallback e atribua a implementação a LoadOptions.ProgressCallback antes de carregar um documento. Durante o carregamento, Notify(args) é chamado com uma instância DocumentLoadingArgs cuja propriedade EstimatedProgress (um double) relata até que ponto o carregamento progrediu.
Monitoramento do Salvamento de Documentos
Implemente IDocumentSavingCallback e atribua-o a SaveOptions.ProgressCallback antes de chamar Document.Save(fileName, saveOptions) (ou a sobrecarga de stream). Durante o salvamento, Notify(args) recebe uma instância DocumentSavingArgs, que também expõe EstimatedProgress como um double.
Dicas e Melhores Práticas
DocumentLoadingArgseDocumentSavingArgssão classes seladas cujo único membro éEstimatedProgress— trate o relatório de progresso como um sinal leve no estilo percentual para feedback da UI, não como um registro detalhado da operação.- Defina
ProgressCallbackna instância deLoadOptionsouSaveOptionsantes de passá-la paraDocument(fileName, loadOptions)ouDocument.Save(fileName, saveOptions)— atribuí-la depois não tem efeito sobre uma operação já em andamento. - Use uma implementação de callback separada para carregamento versus salvamento;
IDocumentLoadingCallbackeIDocumentSavingCallbacksão interfaces distintas embora ambas exponham um único métodoNotify(args).
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
Notify(args) nunca é chamado | ProgressCallback não foi definido na instância LoadOptions/SaveOptions passada para a chamada de load ou save | Atribua ProgressCallback antes de chamar Document(fileName, loadOptions) ou Document.Save(fileName, saveOptions) |
| O callback de progresso compila contra o tipo de argumento errado | IDocumentLoadingCallback.Notify recebe DocumentLoadingArgs; IDocumentSavingCallback.Notify recebe DocumentSavingArgs — eles não são intercambiáveis | Implemente a interface que corresponde à operação (carregamento vs. salvamento) |
FAQ
O que EstimatedProgress representa?
É uma propriedade double em DocumentLoadingArgs (durante o carregamento) ou DocumentSavingArgs (durante o salvamento) que relata o progresso estimado de conclusão da operação.
Posso cancelar uma operação de carregamento ou gravação a partir do callback de progresso?
Notify(args) em ambas as interfaces aceita apenas o objeto de argumentos (DocumentLoadingArgs ou DocumentSavingArgs); nenhum expõe uma bandeira de cancelamento nesta superfície API.
Preciso de classes de callback separadas para carregamento e gravação?
Você precisa de implementações separadas de IDocumentLoadingCallback e IDocumentSavingCallback, respectivamente, pois são interfaces diferentes, embora uma única classe possa implementar ambas.
API Reference Resumo
| Classe / Interface | Descrição |
|---|---|
IDocumentLoadingCallback | Notify(args) — implementar para notificações de progresso de carregamento |
IDocumentSavingCallback | Notify(args) — implementar para notificações de progresso de salvamento |
DocumentLoadingArgs | EstimatedProgress: double — passado para IDocumentLoadingCallback.Notify |
DocumentSavingArgs | EstimatedProgress: double — passed to IDocumentSavingCallback.Notify |
LoadOptions.ProgressCallback | Anexa um IDocumentLoadingCallback a uma operação de carregamento |
SaveOptions.ProgressCallback | Anexa um IDocumentSavingCallback a uma operação de salvamento |