Progress
Progress
Esta guía muestra cómo rastrear el progreso de operaciones de carga y guardado de documentos de larga duración.
Las operaciones de carga y guardado de larga duración pueden informar el progreso incremental mediante un pequeño par de callbacks: IDocumentLoadingCallback para la carga y IDocumentSavingCallback para el guardado. Ambas interfaces siguen la misma forma — un único método Notify(args) invocado por Aspose.Words FOSS para .NET a medida que avanza la operación.
Monitoreo de la carga de documentos
Implemente IDocumentLoadingCallback y asigne la implementación a LoadOptions.ProgressCallback antes de cargar un documento. Durante la carga, se llama a Notify(args) con una instancia de DocumentLoadingArgs cuya propiedad EstimatedProgress (un double) informa hasta qué punto ha progresado la carga.
Monitoreo del guardado de documentos
Implemente IDocumentSavingCallback y asígnelo a SaveOptions.ProgressCallback antes de llamar a Document.Save(fileName, saveOptions) (o la sobrecarga de flujo). Durante el guardado, Notify(args) recibe una instancia de DocumentSavingArgs, que a su vez expone EstimatedProgress como un double.
Consejos y Mejores Prácticas
DocumentLoadingArgsyDocumentSavingArgsson clases selladas cuyo único miembro esEstimatedProgress— trate el informe de progreso como una señal ligera de estilo porcentual para la retroalimentación de la UI, no como un registro detallado de la operación.- Establezca
ProgressCallbacken la instancia deLoadOptionsoSaveOptionsantes de pasarla aDocument(fileName, loadOptions)oDocument.Save(fileName, saveOptions)— asignarla después no tiene efecto en una operación que ya está en curso. - Utilice una implementación de devolución de llamada separada para carga y guardado;
IDocumentLoadingCallbackyIDocumentSavingCallbackson interfaces distintas aunque ambas expongan un único métodoNotify(args).
Problemas Comunes
| Problema | Causa | Solución |
|---|---|---|
Notify(args) nunca se llama | ProgressCallback no se estableció en la instancia LoadOptions/SaveOptions pasada a la llamada de load o save | Asigne ProgressCallback antes de llamar a Document(fileName, loadOptions) o Document.Save(fileName, saveOptions) |
| Progress callback se compila contra el tipo de argumento incorrecto | IDocumentLoadingCallback.Notify toma DocumentLoadingArgs; IDocumentSavingCallback.Notify toma DocumentSavingArgs — no son intercambiables | Implementa la interfaz que coincide con la operación (carga vs. guardado) |
FAQ
¿Qué representa EstimatedProgress?
Es una propiedad double en DocumentLoadingArgs (durante la carga) o DocumentSavingArgs (durante el guardado) que informa del progreso estimado de finalización de la operación.
¿Puedo cancelar una operación de carga o guardado desde la devolución de llamada de progreso?
Notify(args) en ambas interfaces solo acepta el objeto de argumentos (DocumentLoadingArgs o DocumentSavingArgs); ninguno expone una bandera de cancelación en esta superficie de API.
¿Necesito clases de callback separadas para la carga y el guardado?
Necesitas implementaciones separadas de IDocumentLoadingCallback y IDocumentSavingCallback respectivamente, ya que son interfaces diferentes, aunque una única clase podría implementar ambas.
API Reference Resumen
| Clase / Interfaz | Descripción |
|---|---|
IDocumentLoadingCallback | Notify(args) — implementar para notificaciones de progreso de carga |
IDocumentSavingCallback | Notify(args) — implementar para notificaciones de progreso de guardado |
DocumentLoadingArgs | EstimatedProgress: double — pasado a IDocumentLoadingCallback.Notify |
DocumentSavingArgs | EstimatedProgress: double — pasado a IDocumentSavingCallback.Notify |
LoadOptions.ProgressCallback | Adjunta un IDocumentLoadingCallback a una operación de carga |
SaveOptions.ProgressCallback | Adjunta un IDocumentSavingCallback a una operación de guardado |