Suporte a uma Biblioteca Interrompível

Visão geral

Aspose.Slides fornece um mecanismo de processamento interrompível para tarefas de apresentação de longa duração, como desserialização, serialização e renderização. Esse mecanismo baseia‑se nas classes InterruptionToken e InterruptionTokenSource.

Um InterruptionToken pode ser atribuído a LoadOptions e passado ao construtor de Presentation. Quando InterruptionTokenSource.interrupt é chamado, a tarefa de longa duração associada é interrompida.

Biblioteca interrompível

Aspose.Slides for Python via Java fornece as classes InterruptionToken e InterruptionTokenSource. Elas permitem interromper tarefas de longa duração, como desserialização, serialização e renderização.

O trecho de código a seguir demonstra como interromper uma tarefa em execução:

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)  # Execute a ação em uma thread separada.
    time.sleep(10)  # Tempo limite.
    token_source.interrupt()  # Interrompa a conversão.
    conversion_task.result()

Perguntas frequentes

Qual é o objetivo da biblioteca de interrupção do Aspose.Slides?

Ela fornece um mecanismo para interromper operações de longa duração — como carregar, salvar ou renderizar apresentações — antes que sejam concluídas. Isso é útil quando o tempo de processamento deve ser limitado ou a tarefa não é mais necessária.

Qual a diferença entre InterruptionToken e InterruptionTokenSource?

Quais tarefas podem ser interrompidas?

Qualquer tarefa do Aspose.Slides que aceite um InterruptionToken — como carregar uma apresentação com Presentation ou salvar com Presentation.save — pode ser interrompida.

A interrupção ocorre imediatamente?

Não. A interrupção é cooperativa: a operação verifica periodicamente o token e para assim que detecta que interrupt foi chamado.

O que acontece se eu chamar interrupt depois que a tarefa já foi concluída?

Nada — a chamada não tem efeito se a tarefa correspondente já terminou.

Posso reutilizar o mesmo InterruptionTokenSource para várias tarefas?

Sim — mas depois de chamar interrupt nesse source, todas as tarefas que usam seus tokens serão interrompidas. Use fontes de token separadas para gerenciar as tarefas de forma independente.