Soporte para la biblioteca interrumpible

Biblioteca Interrumpible

En Aspose.Slides 18.4, introdujimos las clases InterruptionToken y InterruptionTokenSource. Permiten interrumpir tareas de larga duración como deserialización, serialización y renderizado.

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();          // ejecuta la acción en un hilo separado
Thread.sleep(10000);     // tiempo de espera
tokenSource.interrupt(); // detener la conversión

Preguntas frecuentes

¿Cuál es el propósito de la biblioteca de interrupción de Aspose.Slides?

Proporciona un mecanismo para interrumpir operaciones de larga duración —como cargar, guardar o renderizar presentaciones— antes de que finalicen. Esto es útil cuando el tiempo de procesamiento debe ser limitado o la tarea ya no es necesaria.

¿Cuál es la diferencia entre InterruptionToken y InterruptionTokenSource?

  • InterruptionToken se pasa a la API de Aspose.Slides y se verifica durante operaciones de larga duración.
  • InterruptionTokenSource se usa en su código para crear tokens y activar interrupciones llamando a Interrupt().

¿Qué tareas pueden ser interrumpidas?

Cualquier tarea de Aspose.Slides que acepte un [InterruptionToken] —como cargar una presentación con Presentation(path, loadOptions) o guardar con Presentation.save(...)— puede ser interrumpida.

¿La interrupción ocurre inmediatamente?

No. La interrupción es cooperativa: la operación verifica periódicamente el token y se detiene tan pronto como detecta que se ha llamado a Interrupt().

¿Qué sucede si llamo a Interrupt() después de que una tarea ya haya finalizado?

Nada: la llamada no tiene efecto si la tarea correspondiente ya ha finalizado.

¿Puedo reutilizar el mismo InterruptionTokenSource para múltiples tareas?

Sí, pero después de llamar a Interrupt() en esa fuente, todas las tareas que usen sus tokens serán interrumpidas. Utilice fuentes de tokens separadas para gestionar las tareas de forma independiente.