สนับสนุนไลบรารีที่สามารถขัดจังหวะได้

ภาพรวม

Aspose.Slides มีกลไกการประมวลผลที่สามารถขัดจังหวะได้สำหรับงานนำเสนอที่ใช้เวลานาน เช่น การถอดรหัส (deserialization), การเข้ารหัส (serialization) และการเรนเดอร์ (rendering). กลไกนี้อ้างอิงจากคลาส InterruptionToken และ InterruptionTokenSource.

InterruptionToken สามารถกำหนดให้กับ LoadOptions และส่งต่อไปยังคอนสตรัคเตอร์ของ Presentation. เมื่อเรียก InterruptionTokenSource.interrupt() งานที่ดำเนินการระยะเวลานานที่เกี่ยวข้องจะถูกขัดจังหวะ.

ไลบรารีที่สามารถขัดจังหวะได้

ใน Aspose.Slides 18.4, เราได้แนะนำคลาส InterruptionToken และ InterruptionTokenSource . คลาสเหล่านี้ช่วยให้คุณสามารถขัดจังหวะงานที่ใช้เวลานาน เช่น การถอดรหัส, การเข้ารหัสและการเรนเดอร์.

The following code snippet demonstrates interrupting a running task:

final InterruptionTokenSource tokenSource = new InterruptionTokenSource();

Runnable interruption = new Runnable() {
    public void run() {
        LoadOptions loadOptions = new LoadOptions();
        loadOptions.setInterruptionToken(tokenSource.getToken());

        Presentation presentation = new Presentation("sample.pptx", loadOptions);
        try{
            presentation.save("sample.ppt", SaveFormat.Ppt);
        }
        finally {
            presentation.dispose();
        }
    }
};

Thread thread = new Thread(interruption);
thread.start();          // เรียกใช้การทำงานในเธรดแยก
Thread.sleep(10000);     // หมดเวลา
tokenSource.interrupt(); // หยุดการแปลง

คำถามที่พบบ่อย

วัตถุประสงค์ของไลบรารีขัดจังหวะ Aspose.Slides คืออะไร?

มันให้กลไกเพื่อขัดจังหวะการดำเนินการที่ใช้เวลานาน—เช่น การโหลด, การบันทึก หรือการเรนเดอร์การนำเสนอ—ก่อนที่จะเสร็จสิ้น. สิ่งนี้มีประโยชน์เมื่อต้องจำกัดเวลาในการประมวลผลหรือเมื่องานนั้นไม่จำเป็นต้องทำต่อ.

ความแตกต่างระหว่าง InterruptionToken และ InterruptionTokenSource คืออะไร?

  • InterruptionToken ถูกส่งไปยัง API ของ Aspose.Slides และจะถูกตรวจสอบระหว่างการดำเนินการที่ใช้เวลานาน.
  • InterruptionTokenSource ถูกใช้ในโค้ดของคุณเพื่อสร้างโทเค็นและกระตุ้นการขัดจังหวะโดยการเรียก Interrupt().

งานใดสามารถขัดจังหวะได้?

งานใด ๆ ของ Aspose.Slides ที่รับ InterruptionToken—เช่น การโหลดการนำเสนอด้วย Presentation(path, loadOptions) หรือการบันทึกด้วย Presentation.save(...)—สามารถถูกขัดจังหวะได้.

การขัดจังหวะเกิดขึ้นทันทีหรือไม่?

ไม่. การขัดจังหวะทำงานแบบร่วมมือ: การดำเนินการจะตรวจสอบโทเค็นเป็นระยะและหยุดทันทีเมื่อพบว่ามีการเรียก Interrupt().

จะเกิดอะไรขึ้นถ้าฉันเรียก Interrupt() หลังจากงานเสร็จแล้ว?

ไม่มีอะไรเกิดขึ้น—การเรียกนี้ไม่มีผลหากงานที่เกี่ยวข้องได้เสร็จสิ้นแล้ว.

ฉันสามารถใช้ InterruptionTokenSource เดียวกันสำหรับหลายงานได้หรือไม่?

ได้—แต่หลังจากที่คุณเรียก Interrupt() บนแหล่งนั้น งานทั้งหมดที่ใช้โทเค็นของมันจะถูกขัดจังหวะ. ควรใช้แหล่งโทเค็นแยกต่างหากเพื่อจัดการงานอย่างอิสระ.