Progress
Progress
Ten przewodnik pokazuje, jak śledzić postęp długotrwałych operacji ładowania i zapisywania dokumentów.
Długotrwałe operacje ładowania i zapisywania mogą zgłaszać przyrostowy postęp za pomocą małej pary wywołań zwrotnych: IDocumentLoadingCallback dla ładowania i IDocumentSavingCallback dla zapisywania. Oba interfejsy mają taki sam kształt — pojedyncza metoda Notify(args) wywoływana przez Aspose.Words FOSS dla .NET w miarę postępu operacji.
Monitorowanie ładowania dokumentu
Zaimplementuj IDocumentLoadingCallback i przypisz implementację do LoadOptions.ProgressCallback przed załadowaniem dokumentu. Podczas ładowania wywoływana jest Notify(args) z instancją DocumentLoadingArgs, której właściwość EstimatedProgress (jest double) raportuje, jak daleko postępował proces ładowania.
Monitorowanie zapisywania dokumentu
Zaimplementuj IDocumentSavingCallback i przypisz go do SaveOptions.ProgressCallback przed wywołaniem Document.Save(fileName, saveOptions) (lub przeciążenia strumienia). Podczas zapisywania Notify(args) otrzymuje instancję DocumentSavingArgs, która podobnie udostępnia EstimatedProgress jako double.
Wskazówki i najlepsze praktyki
DocumentLoadingArgsiDocumentSavingArgssą klasami zamkniętymi, których jedynym członkiem jestEstimatedProgress— traktuj raportowanie postępu jako lekki sygnał w stylu procentowym dla informacji zwrotnej UI, a nie szczegółowy dziennik operacji.- Ustaw
ProgressCallbackna instancjiLoadOptionslubSaveOptionsprzed przekazaniem jej doDocument(fileName, loadOptions)lubDocument.Save(fileName, saveOptions)— przypisanie później nie ma wpływu na operację już trwającą. - Użyj osobnej implementacji wywołania zwrotnego dla ładowania i zapisywania;
IDocumentLoadingCallbackiIDocumentSavingCallbacksą odrębnymi interfejsami, mimo że oba udostępniają jedną metodęNotify(args).
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
Notify(args) nigdy nie jest wywoływany | ProgressCallback nie został ustawiony na instancji LoadOptions/SaveOptions przekazanej do wywołania load lub save | Przypisz ProgressCallback przed wywołaniem Document(fileName, loadOptions) lub Document.Save(fileName, saveOptions) |
| Wywołanie zwrotne postępu kompiluje się z niewłaściwym typem argumentu | IDocumentLoadingCallback.Notify przyjmuje DocumentLoadingArgs; IDocumentSavingCallback.Notify przyjmuje DocumentSavingArgs — nie są wymienne | Zaimplementuj interfejs, który odpowiada operacji (ładowanie vs. zapisywanie) |
FAQ
Co oznacza EstimatedProgress?
Jest to właściwość double w DocumentLoadingArgs (podczas ładowania) lub DocumentSavingArgs (podczas zapisywania), która raportuje szacowany postęp zakończenia operacji.
Czy mogę anulować operację ładowania lub zapisu z poziomu wywołania zwrotnego postępu?
Notify(args) na obu interfejsach przyjmuje tylko obiekt argumentów (DocumentLoadingArgs lub DocumentSavingArgs); żaden z nich nie udostępnia flagi anulowania w tej powierzchni API.
Czy potrzebuję osobnych klas wywołań zwrotnych dla ładowania i zapisu?
Potrzebujesz osobnych implementacji IDocumentLoadingCallback i IDocumentSavingCallback odpowiednio, ponieważ są to różne interfejsy, choć pojedyncza klasa może implementować oba.
API Reference Podsumowanie
| Klasa / Interfejs | Opis |
|---|---|
IDocumentLoadingCallback | Notify(args) — implementacja powiadomień o postępie ładowania |
IDocumentSavingCallback | Notify(args) — implementacja powiadomień o postępie zapisywania |
DocumentLoadingArgs | EstimatedProgress: double — przekazywany do IDocumentLoadingCallback.Notify |
DocumentSavingArgs | EstimatedProgress: double — przekazywany do IDocumentSavingCallback.Notify |
LoadOptions.ProgressCallback | Dołącza IDocumentLoadingCallback do operacji ładowania |
SaveOptions.ProgressCallback | Dołącza IDocumentSavingCallback do operacji zapisu |