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.
- InterruptionTokenSource es la fuente del(los) token(s) pasado(s) a ILoadOptions.setInterruptionToken.
- Cuando se establece ILoadOptions.setInterruptionToken y la instancia de LoadOptions se pasa al constructor de Presentation, invocar InterruptionTokenSource.Interrupt() interrumpe cualquier tarea de larga duración asociada a esa Presentation.
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?
InterruptionTokense pasa a la API de Aspose.Slides y se verifica durante operaciones de larga duración.InterruptionTokenSourcese usa en su código para crear tokens y activar interrupciones llamando aInterrupt().
¿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.