Progress

Progress

本指南展示了如何跟踪长时间运行的文档加载和保存操作的进度。

长时间运行的加载和保存操作可以通过一对小回调报告增量进度:加载使用 IDocumentLoadingCallback,保存使用 IDocumentSavingCallback。两个接口遵循相同的结构——一个由 Aspose.Words FOSS 为 .NET 在操作进行时调用的单一 Notify(args) 方法。


监控文档加载

在加载文档之前,实现 IDocumentLoadingCallback 并将实现分配给 LoadOptions.ProgressCallback。在加载过程中,会调用 Notify(args),并传入一个 DocumentLoadingArgs 实例,其 EstimatedProgress 属性(一个 double)报告加载的进度程度。


监控文档保存

在调用 Document.Save(fileName, saveOptions)(或其流重载)之前,实现 IDocumentSavingCallback 并将其分配给 SaveOptions.ProgressCallback。在保存过程中,Notify(args) 接收一个 DocumentSavingArgs 实例,该实例同样将 EstimatedProgress 公开为 double。


提示与最佳实践

  • DocumentLoadingArgs 和 DocumentSavingArgs 是密封类,它们唯一的成员是 EstimatedProgress —— 将进度报告视为用于 UI 反馈的轻量级百分比式信号,而不是详细的操作日志。
  • 在将 ProgressCallback 传递给 Document(fileName, loadOptions) 或 Document.Save(fileName, saveOptions) 之前,先在 LoadOptions 或 SaveOptions 实例上设置它 —— 事后再赋值对已经进行中的操作没有任何影响。
  • 对加载和保存使用不同的回调实现;IDocumentLoadingCallback 和 IDocumentSavingCallback 是不同的接口,尽管它们都只公开一个 Notify(args) 方法。

常见问题

问题原因修复
Notify(args) 从未被调用ProgressCallback 未在传递给 load 或 save 调用的 LoadOptions/SaveOptions 实例上设置在调用 Document(fileName, loadOptions) 或 Document.Save(fileName, saveOptions) 之前分配 ProgressCallback
进度回调使用了错误的参数类型进行编译IDocumentLoadingCallback.Notify 接受 DocumentLoadingArgs;IDocumentSavingCallback.Notify 接受 DocumentSavingArgs — 它们不可互换实现匹配操作(加载 vs. 保存)的接口

FAQ

EstimatedProgress 代表什么?

它是一个 double 属性,位于 DocumentLoadingArgs(加载时)或 DocumentSavingArgs(保存时),用于报告操作的预计完成进度。

我可以在进度回调中取消加载或保存操作吗?

Notify(args) 在两个接口上仅接受参数对象(DocumentLoadingArgs 或 DocumentSavingArgs);在此 API 表面上都未公开取消标志。

我需要为加载和保存分别创建不同的回调类吗?

由于它们是不同的接口,你需要分别实现 IDocumentLoadingCallback 和 IDocumentSavingCallback,尽管单个类可以同时实现两者。


API Reference 摘要

类 / 接口描述
IDocumentLoadingCallbackNotify(args) — 用于加载进度通知的实现
IDocumentSavingCallbackNotify(args) — 用于保存进度通知的实现
DocumentLoadingArgsEstimatedProgress: double — 传递给 IDocumentLoadingCallback.Notify
DocumentSavingArgsEstimatedProgress: double — 传递给 IDocumentSavingCallback.Notify
LoadOptions.ProgressCallback将 IDocumentLoadingCallback 附加到加载操作
SaveOptions.ProgressCallback将 IDocumentSavingCallback 附加到保存操作

另请参阅

 中文