Suporte para 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 ao LoadOptions e passado ao construtor Presentation. Quando InterruptionTokenSource.interrupt() é chamado, a tarefa de longa duração associada é interrompida.

Biblioteca interrompível

Na versão Aspose.Slides 18.4, introduzimos 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 a interrupção de uma tarefa em execução:

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();          // executar a ação em uma thread separada
Thread.sleep(10000);     // tempo limite
tokenSource.interrupt(); // parar a conversão

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?

  • InterruptionToken é passado para a API do Aspose.Slides e verificado durante operações demoradas.
  • InterruptionTokenSource é usado no seu código para criar tokens e disparar interrupções chamando Interrupt().

Quais tarefas podem ser interrompidas?

Qualquer tarefa do Aspose.Slides que aceite um InterruptionToken — como carregar uma apresentação com Presentation(path, loadOptions) 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á foi concluída.

Posso reutilizar o mesmo InterruptionTokenSource para várias tarefas?

Sim — mas depois de chamar Interrupt() nesse source, todas as tarefas que utilizam seus tokens serão interrompidas. Use fontes de token separadas para gerenciar tarefas independentemente.