Progress
Progress
이 가이드는 장시간 실행되는 문서 로드 및 저장 작업의 진행 상황을 추적하는 방법을 보여줍니다.
장시간 실행되는 로드 및 저장 작업은 작은 콜백 쌍을 통해 점진적인 진행 상황을 보고할 수 있습니다: 로드용 IDocumentLoadingCallback와 저장용 IDocumentSavingCallback. 두 인터페이스는 동일한 형태를 따르며 — Aspose.Words FOSS가 .NET에 대해 작업이 진행되는 동안 호출하는 단일 Notify(args) 메서드입니다.
문서 로드 모니터링
IDocumentLoadingCallback을 구현하고 문서를 로드하기 전에 구현을 LoadOptions.ProgressCallback에 할당합니다. 로드 중에 Notify(args)가 DocumentLoadingArgs 인스턴스로 호출되며, 해당 인스턴스의 EstimatedProgress 속성(double)이 로드가 얼마나 진행되었는지를 보고합니다.
문서 저장 모니터링
IDocumentSavingCallback을 구현하고 SaveOptions.ProgressCallback에 할당한 뒤 Document.Save(fileName, saveOptions)(또는 스트림 오버로드)를 호출합니다. 저장 중에 Notify(args)은 DocumentSavingArgs 인스턴스를 받으며, 이 인스턴스 역시 EstimatedProgress를 double로 노출합니다.
팁 및 모범 사례
DocumentLoadingArgs와DocumentSavingArgs은(는) 단일 멤버가EstimatedProgress인 sealed 클래스입니다 — 진행 상황 보고를 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) 호출하기 전에 할당하십시오 |
| Progress 콜백이 잘못된 인수 유형으로 컴파일됩니다 | IDocumentLoadingCallback.Notify은(는) DocumentLoadingArgs을(를) 사용하고; IDocumentSavingCallback.Notify은(는) DocumentSavingArgs을(를) 사용합니다 — 서로 교환할 수 없습니다 | 작업(로드 vs 저장)에 맞는 인터페이스를 구현합니다 |
FAQ
EstimatedProgress은(는) 무엇을 나타내나요?
이는 DocumentLoadingArgs에 있는 double 속성(로드 중) 또는 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를 연결합니다 |