Progress
Progress
Tento průvodce ukazuje, jak sledovat průběh dlouhotrvajících operací načítání a ukládání dokumentů.
Dlouhotrvající operace načítání a ukládání mohou hlásit postupný průběh pomocí malého páru callbacků: IDocumentLoadingCallback pro načítání a IDocumentSavingCallback pro ukládání. Obě rozhraní mají stejnou strukturu — jedinou metodu Notify(args), kterou volá Aspose.Words FOSS pro .NET, jak operace postupuje.
Sledování načítání dokumentu
Implementujte IDocumentLoadingCallback a přiřaďte implementaci k LoadOptions.ProgressCallback před načtením dokumentu. Během načítání je Notify(args) voláno s instancí DocumentLoadingArgs, jejíž vlastnost EstimatedProgress (double) uvádí, jak daleko načítání pokročilo.
Sledování ukládání dokumentu
Implementujte IDocumentSavingCallback a přiřaďte jej k SaveOptions.ProgressCallback před voláním Document.Save(fileName, saveOptions) (nebo přetížením streamu). Během ukládání Notify(args) přijímá instanci DocumentSavingArgs, která obdobně poskytuje EstimatedProgress jako double.
Tipy a osvědčené postupy
DocumentLoadingArgsaDocumentSavingArgsjsou uzavřené třídy, jejichž jediným členem jeEstimatedProgress— považujte hlášení postupu za lehký signál ve stylu procent pro zpětnou vazbu UI, nikoli podrobný protokol operace.- Nastavte
ProgressCallbackna instanciLoadOptionsneboSaveOptionspřed jejím předáním doDocument(fileName, loadOptions)neboDocument.Save(fileName, saveOptions)— přiřazení později nemá žádný vliv na operaci, která již probíhá. - Použijte samostatnou implementaci callbacku pro načítání a pro ukládání;
IDocumentLoadingCallbackaIDocumentSavingCallbackjsou odlišná rozhraní, i když obě vystavují jedinou metoduNotify(args).
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
Notify(args) se nikdy nevolá | ProgressCallback nebyl nastaven na instanci LoadOptions/SaveOptions předané při volání load nebo save | Přiřaďte ProgressCallback před voláním Document(fileName, loadOptions) nebo Document.Save(fileName, saveOptions) |
| Callback pro postup se kompiluje s nesprávným typem argumentu | IDocumentLoadingCallback.Notify přijímá DocumentLoadingArgs; IDocumentSavingCallback.Notify přijímá DocumentSavingArgs — nejsou zaměnitelné | Implementujte rozhraní, které odpovídá operaci (načítání vs. ukládání) |
FAQ
Co představuje EstimatedProgress?
Jedná se o vlastnost double na DocumentLoadingArgs (během načítání) nebo DocumentSavingArgs (během ukládání), která hlásí odhadovaný pokrok dokončení operace.
Mohu zrušit operaci načítání nebo ukládání z callbacku průběhu?
Notify(args) na obou rozhraních přijímá jen objekt arguments (DocumentLoadingArgs nebo DocumentSavingArgs); žádné z nich neodhaluje příznak zrušení v tomto API rozhraní.
Potřebuji samostatné třídy callbacku pro načítání a ukládání?
Potřebujete samostatné implementace IDocumentLoadingCallback a IDocumentSavingCallback respektive, protože se jedná o různá rozhraní, ačkoliv jedna třída může implementovat obě.
API Reference Shrnutí
| Třída / Rozhraní | Popis: |
|---|---|
IDocumentLoadingCallback | Notify(args) — implementace pro oznámení o průběhu načítání |
IDocumentSavingCallback | Notify(args) — implementace pro oznámení o průběhu ukládání |
DocumentLoadingArgs | EstimatedProgress: double — předáno do IDocumentLoadingCallback.Notify |
DocumentSavingArgs | EstimatedProgress: double — předáno do IDocumentSavingCallback.Notify |
LoadOptions.ProgressCallback | Připojí IDocumentLoadingCallback k operaci načítání |
SaveOptions.ProgressCallback | Připojí IDocumentSavingCallback k operaci ukládání |