Dukungan untuk Perpustakaan yang Dapat Diinterupsi

Ikhtisar

Aspose.Slides menyediakan mekanisme pemrosesan yang dapat diinterupsi untuk tugas presentasi yang memakan waktu lama, seperti deserialisasi, serialisasi, dan rendering. Mekanisme ini didasarkan pada kelas InterruptionToken dan InterruptionTokenSource.

Sebuah InterruptionToken dapat ditetapkan ke LoadOptions dan diteruskan ke konstruktor Presentation. Ketika InterruptionTokenSource.interrupt dipanggil, tugas yang memakan waktu lama terkait akan diinterupsi.

Perpustakaan yang Dapat Diinterupsi

Aspose.Slides untuk Python via Java menyediakan kelas InterruptionToken dan InterruptionTokenSource. Kelas‑kelas ini memungkinkan Anda menginterupsi tugas yang memakan waktu lama seperti deserialisasi, serialisasi, dan rendering.

Potongan kode berikut memperlihatkan cara menginterupsi tugas yang sedang berjalan:

from concurrent.futures import ThreadPoolExecutor
import time

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import InterruptionTokenSource, LoadOptions, Presentation, SaveFormat


token_source = InterruptionTokenSource()


def convert_presentation():
    load_options = LoadOptions()
    load_options.setInterruptionToken(token_source.getToken())

    presentation = Presentation("sample.pptx", load_options)
    try:
        presentation.save("sample.ppt", SaveFormat.Ppt)
    finally:
        presentation.dispose()


with ThreadPoolExecutor(max_workers=1) as executor:
    conversion_task = executor.submit(convert_presentation)  # Jalankan aksi dalam thread terpisah.
    time.sleep(10)  # Batas waktu.
    token_source.interrupt()  # Hentikan konversi.
    conversion_task.result()

FAQ

Apa tujuan perpustakaan interupsi Aspose.Slides?

Perpustakaan ini menyediakan mekanisme untuk menginterupsi operasi yang memakan waktu lama—seperti memuat, menyimpan, atau merender presentasi—sebelum selesai. Hal ini berguna ketika waktu pemrosesan harus dibatasi atau tugas tidak lagi diperlukan.

Apa perbedaan antara InterruptionToken dan InterruptionTokenSource?

Tugas apa saja yang dapat diinterupsi?

Setiap tugas Aspose.Slides yang menerima InterruptionToken—seperti memuat presentasi dengan Presentation atau menyimpan dengan Presentation.save—dapat diinterupsi.

Apakah interupsi terjadi secara langsung?

Tidak. Interupsi bersifat kooperatif: operasi secara periodik memeriksa token dan berhenti segera setelah mendeteksi bahwa interrupt telah dipanggil.

Apa yang terjadi jika saya memanggil interrupt setelah tugas selesai?

Tidak ada yang terjadi—pemanggilan tersebut tidak berpengaruh jika tugas yang bersangkutan sudah selesai.

Apakah saya dapat menggunakan kembali InterruptionTokenSource yang sama untuk beberapa tugas?

Ya—tetapi setelah Anda memanggil interrupt pada sumber tersebut, semua tugas yang menggunakan token‑nya akan diinterupsi. Gunakan sumber token terpisah untuk mengelola tugas secara independen.