Progress
Progress
このガイドでは、長時間実行されるドキュメントの読み込みおよび保存操作の進捗を追跡する方法を示します。
長時間実行される読み込みおよび保存操作は、小さなコールバックペアを通じて増分の進捗を報告できます: IDocumentLoadingCallback(読み込み用)と IDocumentSavingCallback(保存用)です。両方のインターフェースは同じ形状に従い、Aspose.Words FOSS が .NET のために呼び出す単一の Notify(args) メソッドです。
ドキュメント読み込みの監視
IDocumentLoadingCallback を実装し、ドキュメントを読み込む前にその実装を LoadOptions.ProgressCallback に割り当てます。読み込み中は、Notify(args) が DocumentLoadingArgs のインスタンスと共に呼び出され、そのインスタンスの EstimatedProgress プロパティ(double)が読み込みの進捗度合いを報告します。
ドキュメント保存の監視
IDocumentSavingCallback を実装し、Document.Save(fileName, saveOptions)(またはストリームのオーバーロード)を呼び出す前にそれを SaveOptions.ProgressCallback に割り当てます。保存中は、Notify(args) が DocumentSavingArgs のインスタンスを受け取り、同様に EstimatedProgress を double として公開します。
ヒントとベストプラクティス
DocumentLoadingArgsとDocumentSavingArgsはシールドクラスで、唯一のメンバーはEstimatedProgressです — 進捗報告は詳細な操作ログではなく、UI フィードバック用の軽量なパーセンテージスタイルのシグナルとして扱ってください。ProgressCallbackをLoadOptionsまたはSaveOptionsインスタンスに設定してからDocument(fileName, loadOptions)またはDocument.Save(fileName, saveOptions)に渡してください — 後から割り当てても、進行中の操作には影響しません。- ロードと保存では別々のコールバック実装を使用してください;
IDocumentLoadingCallbackとIDocumentSavingCallbackはそれぞれ別個のインターフェースで、両方とも単一のNotify(args)メソッドを公開しています。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
Notify(args) は決して呼び出されません | ProgressCallback が load または save 呼び出しに渡された LoadOptions/SaveOptions インスタンスに設定されていません | ProgressCallback を Document(fileName, loadOptions) または Document.Save(fileName, saveOptions) を呼び出す前に割り当ててください |
| 進捗コールバックが誤った引数型でコンパイルされています | IDocumentLoadingCallback.Notify は DocumentLoadingArgs を受け取り、IDocumentSavingCallback.Notify は DocumentSavingArgs を受け取ります — それらは交換できません | 操作(loading vs. saving)に一致するインターフェースを実装する |
FAQ
「EstimatedProgress」は何を表していますか?
これは、ロード時の DocumentLoadingArgs、または保存時の DocumentSavingArgs 上にある double プロパティで、操作の推定完了進捗を報告します。
プログレスコールバックからロードまたは保存操作をキャンセルできますか?
Notify(args)は両方のインターフェースで引数オブジェクト(DocumentLoadingArgsまたはDocumentSavingArgs)だけを受け取ります;このAPIの表面ではキャンセルフラグが公開されていません。
ロードと保存のために別々のコールバッククラスが必要ですか?
それらは異なるインターフェースであるため、IDocumentLoadingCallbackとIDocumentSavingCallbackのそれぞれに別々の実装が必要ですが、単一のクラスで両方を実装することも可能です。
API Reference の概要
| クラス / インターフェース | 説明 |
|---|---|
IDocumentLoadingCallback | Notify(args) — ロード進行通知用に実装 |
IDocumentSavingCallback | Notify(args) — 保存進行通知用に実装 |
DocumentLoadingArgs | EstimatedProgress: double — IDocumentLoadingCallback.Notify に渡される |
DocumentSavingArgs | EstimatedProgress: double — IDocumentSavingCallback.Notify に渡される |
LoadOptions.ProgressCallback | ロード操作に IDocumentLoadingCallback を添付します |
SaveOptions.ProgressCallback | 保存操作に IDocumentSavingCallback を添付します |