Progress
Progress
คู่มือฉบับนี้แสดงวิธีการติดตามความคืบหน้าของการโหลดและบันทึกเอกสารที่ใช้เวลานาน.
การโหลดและบันทึกเอกสารที่ใช้เวลานานสามารถรายงานความคืบหน้าทีละขั้นได้ผ่านคู่ callback เล็ก ๆ: IDocumentLoadingCallback สำหรับการโหลดและ IDocumentSavingCallback สำหรับการบันทึก ทั้งสองอินเทอร์เฟซมีรูปแบบเดียวกัน — วิธี Notify(args) เพียงหนึ่งเดียวที่ถูกเรียกโดย Aspose.Words FOSS สำหรับ .NET เมื่อการดำเนินการดำเนินต่อไป.
การตรวจสอบการโหลดเอกสาร
ดำเนินการ IDocumentLoadingCallback และกำหนดการดำเนินการนั้นให้กับ LoadOptions.ProgressCallback ก่อนทำการโหลดเอกสาร ระหว่างการโหลด, Notify(args) จะถูกเรียกพร้อมกับอินสแตนซ์ DocumentLoadingArgs ที่มีคุณสมบัติ EstimatedProgress (ซึ่งเป็น double) รายงานว่าการโหลดได้ดำเนินไปถึงระดับใดแล้ว.
การตรวจสอบการบันทึกเอกสาร
ดำเนินการ IDocumentSavingCallback และกำหนดให้กับ SaveOptions.ProgressCallback ก่อนเรียก Document.Save(fileName, saveOptions) (หรือ overload ของสตรีม) ระหว่างการบันทึก, Notify(args) จะได้รับอินสแตนซ์ DocumentSavingArgs ซึ่งเช่นเดียวกันเปิดเผย EstimatedProgress เป็น double.
เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
DocumentLoadingArgsและDocumentSavingArgsเป็นคลาสที่ปิด (sealed) ซึ่งสมาชิกเดียวคือEstimatedProgress— ให้ถือว่าการรายงานความคืบหน้าเป็นสัญญาณสไตล์เปอร์เซ็นต์แบบน้ำหนักเบาสำหรับการตอบสนอง UI ไม่ใช่บันทึกการดำเนินการโดยละเอียด.- ตั้งค่า
ProgressCallbackในอินสแตนซ์ของLoadOptionsหรือSaveOptionsก่อนส่งไปยังDocument(fileName, loadOptions)หรือDocument.Save(fileName, saveOptions)— การกำหนดค่าหลังจากนั้นไม่มีผลต่อการดำเนินการที่กำลังทำอยู่. - ใช้การทำงาน callback แยกต่างหากสำหรับการโหลดและการบันทึก;
IDocumentLoadingCallbackและIDocumentSavingCallbackเป็นอินเทอร์เฟซที่แตกต่างกันแม้ว่าทั้งสองจะเปิดเผยเมธอดNotify(args)เพียงหนึ่งเดียว.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
Notify(args) ไม่เคยถูกเรียกใช้ | ProgressCallback ไม่ได้ตั้งค่าไว้บนอินสแตนซ์ LoadOptions/SaveOptions ที่ส่งให้กับการเรียก load หรือ save | กำหนดค่า ProgressCallback ก่อนเรียก Document(fileName, loadOptions) หรือ Document.Save(fileName, saveOptions) |
| Progress callback คอมไพล์กับประเภทอาร์กิวเมนต์ที่ไม่ถูกต้อง | IDocumentLoadingCallback.Notify รับค่า DocumentLoadingArgs; IDocumentSavingCallback.Notify รับค่า DocumentSavingArgs — พวกมันไม่สามารถใช้แทนกันได้ | สร้างอินเทอร์เฟซที่ตรงกับการดำเนินการ (การโหลด vs การบันทึก) |
FAQ
EstimatedProgress หมายถึงอะไร?
มันเป็นคุณสมบัติ double บน DocumentLoadingArgs (ระหว่างการโหลด) หรือ DocumentSavingArgs (ระหว่างการบันทึก) ที่รายงานความคืบหน้าการเสร็จสิ้นโดยประมาณของการดำเนินการ.
ฉันสามารถยกเลิกการดำเนินการโหลดหรือบันทึกจาก callback ความคืบหน้าได้หรือไม่?
Notify(args) บนทั้งสองอินเทอร์เฟซรับเพียงอ็อบเจ็กต์ arguments (DocumentLoadingArgs หรือ DocumentSavingArgs); ทั้งสองไม่เปิดเผยแฟล็กการยกเลิกในส่วนติดต่อ API นี้.
ฉันต้องการคลาส callback แยกต่างหากสำหรับการโหลดและการบันทึกหรือไม่?
คุณต้องมีการนำไปใช้แยกต่างหากของ 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 ไปยังการดำเนินการบันทึก |